diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..444d4ce
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,329 @@
+* 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
+
+/build.properties -text
+demos/manifest.stub -text
+icu-eclipse/misc/ICUConfig.properties -text
+main/classes/charset/.classpath -text
+main/classes/charset/.project -text
+main/classes/charset/.settings/org.eclipse.jdt.core.prefs -text
+main/classes/charset/manifest.stub -text
+main/classes/collate/.classpath -text
+main/classes/collate/.project -text
+main/classes/collate/.settings/org.eclipse.jdt.core.prefs -text
+main/classes/collate/.settings/org.eclipse.jdt.ui.prefs -text
+main/classes/collate/collate-build.launch -text
+main/classes/core/.classpath -text
+main/classes/core/.project -text
+main/classes/core/.settings/org.eclipse.jdt.core.prefs -text
+main/classes/core/manifest.stub -text
+main/classes/localespi/.classpath -text
+main/classes/localespi/.project -text
+main/classes/localespi/.settings/org.eclipse.jdt.core.prefs -text
+main/classes/localespi/manifest.stub -text
+main/classes/localespi/src/META-INF/services/java.text.spi.BreakIteratorProvider -text
+main/classes/localespi/src/META-INF/services/java.text.spi.CollatorProvider -text
+main/classes/localespi/src/META-INF/services/java.text.spi.DateFormatProvider -text
+main/classes/localespi/src/META-INF/services/java.text.spi.DateFormatSymbolsProvider -text
+main/classes/localespi/src/META-INF/services/java.text.spi.DecimalFormatSymbolsProvider -text
+main/classes/localespi/src/META-INF/services/java.text.spi.NumberFormatProvider -text
+main/classes/localespi/src/META-INF/services/java.util.spi.CurrencyNameProvider -text
+main/classes/localespi/src/META-INF/services/java.util.spi.LocaleNameProvider -text
+main/classes/localespi/src/META-INF/services/java.util.spi.TimeZoneNameProvider -text
+main/classes/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties -text
+main/classes/translit/.externalToolBuilders/copy-data-translit.launch -text
+main/classes/translit/.settings/org.eclipse.jdt.core.prefs -text
+main/classes/translit/.settings/org.eclipse.jdt.ui.prefs -text
+main/classes/translit/translit-build.launch -text
+main/shared/.project -text
+main/shared/build/eclipse-dummy.jar -text
+main/shared/data/icudata.jar -text
+main/shared/data/testdata.jar -text
+main/tests/charset/.classpath -text
+main/tests/charset/.project -text
+main/tests/charset/.settings/org.eclipse.jdt.core.prefs -text
+main/tests/charset/manifest.stub -text
+main/tests/collate/.classpath -text
+main/tests/collate/.project -text
+main/tests/collate/.settings/org.eclipse.jdt.core.prefs -text
+main/tests/collate/.settings/org.eclipse.jdt.ui.prefs -text
+main/tests/collate/collate-tests-build.launch -text
+main/tests/core/.classpath -text
+main/tests/core/.project -text
+main/tests/core/.settings/org.eclipse.jdt.core.prefs -text
+main/tests/core/manifest.stub -text
+main/tests/core/src/com/ibm/icu/dev/data/rbbi/english.dict -text
+main/tests/core/src/com/ibm/icu/dev/data/thai6.ucs -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.OlsonTimeZone.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.TimeZoneAdapter.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.BigDecimal.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.MathContext.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ArabicShapingException.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormatSymbols.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormatSymbols.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormatSymbols.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.MessageFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.NumberFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.RuleBasedNumberFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.SimpleDateFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.StringPrepParseException.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.BuddhistCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Calendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ChineseCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.CopticCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Currency.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.EthiopicCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.GregorianCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.HebrewCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.IslamicCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.JapaneseCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.SimpleTimeZone.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.TimeZone.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ULocale.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.UResourceTypeMismatchException.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.DateNumberFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.InvalidFormatException.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.OlsonTimeZone.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.RelativeDateFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.TimeZoneAdapter.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.BigDecimal.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.MathContext.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ArabicShapingException.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat$Field.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat$Field.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormatSymbols.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormatSymbols.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat$Field.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat$Field.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralRules.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.RuleBasedNumberFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.SimpleDateFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.StringPrepParseException.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.AnnualTimeZoneRule.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.BuddhistCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Calendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ChineseCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.CopticCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Currency.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.DateTimeRule.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.EthiopicCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.GregorianCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.HebrewCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IndianCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.InitialTimeZoneRule.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IslamicCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.JapaneseCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.RuleBasedTimeZone.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.SimpleTimeZone.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TaiwanCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeZone.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ULocale.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.UResourceTypeMismatchException.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.VTimeZone.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.DateNumberFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.InvalidFormatException.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.JavaTimeZone.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.OlsonTimeZone.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.RelativeDateFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.TimeZoneAdapter.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.duration.BasicDurationFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.BigDecimal.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.MathContext.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ArabicShapingException.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat$Field.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormatSymbols.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat$Field.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormatSymbols.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormatSymbols.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat$Field.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat$Field.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralRules.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.RuleBasedNumberFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.SimpleDateFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.StringPrepParseException.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.TimeUnitFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.AnnualTimeZoneRule.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.BuddhistCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Calendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ChineseCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.CopticCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Currency.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateInterval.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateTimeRule.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.EthiopicCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.GregorianCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.HebrewCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IndianCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.InitialTimeZoneRule.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IslamicCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.JapaneseCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.RuleBasedTimeZone.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.SimpleTimeZone.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TaiwanCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeArrayTimeZoneRule.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeZone.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ULocale.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.UResourceTypeMismatchException.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.VTimeZone.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.DateNumberFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.IllegalIcuArgumentException.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.InvalidFormatException.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.JavaTimeZone.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.OlsonTimeZone.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.RelativeDateFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.TimeZoneAdapter.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.locale.LocaleSyntaxException.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.math.BigDecimal.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.math.MathContext.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.ArabicShapingException.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.ChineseDateFormat$Field.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.ChineseDateFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.CurrencyPluralInfo.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateFormat$Field.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateFormatSymbols.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateIntervalFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateIntervalInfo.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DecimalFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DecimalFormatSymbols.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.MessageFormat$Field.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.MessageFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.NumberFormat$Field.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.NumberFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.PluralFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.PluralRules.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.RuleBasedNumberFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.SimpleDateFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.StringPrepParseException.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.TimeUnitFormat.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.AnnualTimeZoneRule.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.BuddhistCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.Calendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.ChineseCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.CopticCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.Currency.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.DateInterval.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.DateTimeRule.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.EthiopicCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.GregorianCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.HebrewCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.IllformedLocaleException.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.IndianCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.InitialTimeZoneRule.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.IslamicCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.JapaneseCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.RuleBasedTimeZone.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.SimpleTimeZone.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.TaiwanCalendar.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.TimeZone.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.ULocale.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.UResourceTypeMismatchException.dat -text
+main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.VTimeZone.dat -text
+main/tests/framework/.classpath -text
+main/tests/framework/.project -text
+main/tests/framework/.settings/org.eclipse.jdt.core.prefs -text
+main/tests/framework/manifest.stub -text
+main/tests/localespi/.classpath -text
+main/tests/localespi/.project -text
+main/tests/localespi/manifest.stub -text
+main/tests/translit/.externalToolBuilders/copy-translit-test-data.launch -text
+main/tests/translit/.settings/org.eclipse.jdt.core.prefs -text
+main/tests/translit/.settings/org.eclipse.jdt.ui.prefs -text
+main/tests/translit/translit-tests-build.launch -text
+tools/build/icu4j28.api.gz -text
+tools/build/icu4j30.api.gz -text
+tools/build/icu4j32.api.gz -text
+tools/build/icu4j34.api.gz -text
+tools/build/icu4j341.api.gz -text
+tools/build/icu4j342.api.gz -text
+tools/build/icu4j343.api.gz -text
+tools/build/icu4j36.api.gz -text
+tools/build/icu4j38.api.gz -text
+tools/build/icu4j381.api.gz -text
+tools/build/icu4j400.api.gz -text
+tools/build/icu4j401.api.gz -text
+tools/build/icu4j42.api.gz -text
+tools/build/icu4j421.api.gz -text
+tools/build/manifest.stub -text
+tools/misc/manifest.stub -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..344a017
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,18 @@
+/*.jar
+/.project
+demos/out
+/doc
+main/classes/charset/out
+main/classes/collate/out
+main/classes/core/out
+main/classes/localespi/out
+main/classes/translit/out
+main/tests/charset/out
+main/tests/collate/out
+main/tests/core/out
+main/tests/framework/out
+main/tests/localespi/out
+main/tests/translit/out
+/out
+tools/build/out
+tools/misc/out
diff --git a/APIChangeReport.html b/APIChangeReport.html
new file mode 100644
index 0000000..6417b35
--- /dev/null
+++ b/APIChangeReport.html
@@ -0,0 +1,401 @@
+<!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 4.2.1 with ICU4J 4.3.2</title>
+<!-- Copyright 2009, IBM, All Rights Reserved. -->
+</head>
+<body>
+<h1>ICU4J API Comparison: ICU4J 4.2.1 with ICU4J 4.3.2</h1>
+
+<hr/>
+<h2>Removed from ICU4J 4.2.1</h2>
+
+<h3>Package com.ibm.icu.math</h3>
+<ul>
+BigDecimal
+<ul>
+<li>(stable)     public int <i>compareTo</i>(java.lang.Object)</li>
+</ul>
+</ul>
+
+<h3>Package com.ibm.icu.text</h3>
+<ul>
+<li><span style='color:red'>*internal*  </span>public class <i>BreakDictionary</i></li>
+CollationKey
+<ul>
+<li>(stable)     public int <i>compareTo</i>(java.lang.Object)</li>
+</ul>
+DateIntervalInfo
+<ul>
+<li>(stable)     public java.lang.Object <i>cloneAsThawed</i>()</li>
+<li>(stable)     public java.lang.Object <i>freeze</i>()</li>
+</ul>
+DateTimePatternGenerator
+<ul>
+<li>(stable)     public java.lang.Object <i>cloneAsThawed</i>()</li>
+<li>(stable)     public java.lang.Object <i>freeze</i>()</li>
+</ul>
+</ul>
+
+<h3>Package com.ibm.icu.util</h3>
+<ul>
+Calendar
+<ul>
+<li>(stable)     public int <i>compareTo</i>(java.lang.Object)</li>
+</ul>
+ChineseCalendar
+<ul>
+<li>(stable)     public static int IS_LEAP_MONTH</li>
+<li>(stable)     protected int[] <i>handleCreateFields</i>()</li>
+</ul>
+GlobalizationPreferences
+<ul>
+<li>(draft)      public java.lang.Object <i>cloneAsThawed</i>()</li>
+<li>(draft)      public java.lang.Object <i>freeze</i>()</li>
+</ul>
+ULocale
+<ul>
+<li>(draft)      public static VersionInfo <i>getCLDRVersion</i>()</li>
+</ul>
+UResourceBundle
+<ul>
+<li><span style='color:red'>*internal*  </span>protected static final int ALIAS</li>
+<li><span style='color:red'>*internal*  </span>protected static final int TABLE32</li>
+<li><span style='color:red'>*internal*  </span>protected boolean isTopLevel</li>
+<li><span style='color:red'>*internal*  </span>protected java.lang.String key</li>
+<li><span style='color:red'>*internal*  </span>protected long resource</li>
+<li><span style='color:red'>*internal*  </span>protected int size</li>
+</ul>
+VersionInfo
+<ul>
+<li>(draft)      public int <i>compareTo</i>(java.lang.Object)</li>
+</ul>
+</ul>
+
+
+<hr/>
+<h2>Withdrawn, Deprecated, or Obsoleted in ICU4J 4.3.2</h2>
+<p>(no API obsoleted)</p>
+
+<hr/>
+<h2>Changed in ICU4J 4.3.2 (old, new)</h2>
+
+<h3>Package com.ibm.icu.charset</h3>
+<ul>
+CharsetProviderICU
+<ul>
+<li>    <span style='color:red'>*internal*  </span>public static final java.lang.Object[] <i>getAvailableNames</i>()</br>
+<span style='color:red'>*internal*  </span>public static final java.lang.String[] <i>getAvailableNames</i>()</li>
+</ul>
+</ul>
+
+<h3>Package com.ibm.icu.text</h3>
+<ul>
+CharsetMatch
+<ul>
+<li>    (stable)     public int <i>compareTo</i>(java.lang.Object)</br>
+(draft)      public int <i>compareTo</i>(com.ibm.icu.text.CharsetMatch)</li>
+<li>    (stable)     public class <i>MessageFormat</i> extends com.ibm.icu.text.UFormat</br>
+(stable)     public class <i>MessageFormat</i> extends com.ibm.icu.text.UFormat implements com.ibm.icu.text.BaseFormat</li>
+</ul>
+RawCollationKey
+<ul>
+<li>    (stable)     public int <i>compareTo</i>(java.lang.Object)</br>
+(stable)     public int <i>compareTo</i>(com.ibm.icu.text.RawCollationKey)</li>
+<li>    (stable)     public interface <i>StringTransform</i> </br>
+(stable)     public interface <i>StringTransform</i> implements com.ibm.icu.text.Transform</li>
+<li>    (draft)      public abstract class <i>UFormat</i> extends java.text.Format</br>
+(draft)      public abstract class <i>UFormat</i> extends java.text.Format implements com.ibm.icu.text.BaseFormat</li>
+</ul>
+UTF16.StringComparator
+<ul>
+<li>    (stable)     public int <i>compare</i>(java.lang.Object, java.lang.Object)</br>
+(stable)     public int <i>compare</i>(java.lang.String, java.lang.String)</li>
+<li>    (stable)     public class <i>UnicodeSet</i> extends com.ibm.icu.text.UnicodeFilter implements com.ibm.icu.util.Freezable</br>
+(stable)     public class <i>UnicodeSet</i> extends com.ibm.icu.text.UnicodeFilter implements java.lang.Iterable, java.lang.Comparable, com.ibm.icu.util.Freezable</li>
+</ul>
+UnicodeSet
+<ul>
+<li>    (stable)     public void <i>addAll</i>(java.util.Collection)</br>
+(draft)      public com.ibm.icu.text.UnicodeSet <i>addAll</i>(int, int)</li>
+<li>    (stable)     public void <i>addAllTo</i>(java.util.Collection)</br>
+(draft)      public static java.lang.Object[] <i>addAllTo</i>(java.lang.Iterable, T[])</li>
+<li>    (stable)     public java.lang.Object <i>cloneAsThawed</i>()</br>
+(stable)     public com.ibm.icu.text.UnicodeSet <i>cloneAsThawed</i>()</li>
+<li>    (stable)     public java.lang.Object <i>freeze</i>()</br>
+(stable)     public com.ibm.icu.text.UnicodeSet <i>freeze</i>()</li>
+</ul>
+</ul>
+
+<h3>Package com.ibm.icu.util</h3>
+<ul>
+ByteArrayWrapper
+<ul>
+<li>    (stable)     public int <i>compareTo</i>(java.lang.Object)</br>
+(stable)     public int <i>compareTo</i>(com.ibm.icu.util.ByteArrayWrapper)</li>
+</ul>
+UResourceBundle
+<ul>
+<li>    <span style='color:red'>*internal*  </span>protected static void <i>addToCache</i>(java.lang.ClassLoader, java.lang.String, com.ibm.icu.util.ULocale, com.ibm.icu.util.UResourceBundle)</br>
+<span style='color:red'>*internal*  </span>protected static com.ibm.icu.util.UResourceBundle <i>addToCache</i>(java.lang.ClassLoader, java.lang.String, com.ibm.icu.util.ULocale, com.ibm.icu.util.UResourceBundle)</li>
+</ul>
+VersionInfo
+<ul>
+<li>    <span style='color:red'>*internal*  </span>public static final java.lang.String ICU_DATA_VERSION</br>
+(draft)      public static final com.ibm.icu.util.VersionInfo ICU_DATA_VERSION</li>
+</ul>
+</ul>
+
+
+<hr/>
+<h2>Promoted to stable in ICU4J 4.3.2</h2>
+<p>(no API promoted)</p>
+
+<hr/>
+<h2>Added in ICU4J 4.3.2</h2>
+
+<h3>Package com.ibm.icu.charset</h3>
+<ul>
+CharsetDecoderICU
+<ul>
+<li>(draft)      protected static final int EXT_MAX_BYTES</li>
+</ul>
+</ul>
+
+<h3>Package com.ibm.icu.impl</h3>
+<ul>
+<li>(draft)      public class <i>Assert</i></li>
+<li>(draft)      public class <i>BOCU</i></li>
+<li><span style='color:red'>*internal*  </span>public class <i>CalendarAstronomer</i></li>
+<li><span style='color:red'>*internal*  </span>public static final class <i>CalendarAstronomer.Ecliptic</i></li>
+<li><span style='color:red'>*internal*  </span>public static final class <i>CalendarAstronomer.Equatorial</i></li>
+<li><span style='color:red'>*internal*  </span>public static final class <i>CalendarAstronomer.Horizon</i></li>
+<li><span style='color:red'>*internal*  </span>public class <i>CalendarCache</i></li>
+<li><span style='color:red'>*internal*  </span>public class <i>CalendarData</i></li>
+<li>(draft)      public class <i>CalendarUtil</i></li>
+<li>(draft)      public class <i>CharTrie</i></li>
+<li>(draft)      public class <i>CharTrie.FriendAgent</i></li>
+<li>(draft)      public class <i>CharacterIteratorWrapper</i></li>
+<li>(draft)      public final class <i>DateNumberFormat</i></li>
+<li>(draft)      public final class <i>Differ</i></li>
+<li>(draft)      public class <i>Grego</i></li>
+<li>(draft)      public final class <i>ICUBinary</i></li>
+<li>(draft)      public static interface <i>ICUBinary.Authenticate</i></li>
+<li>(draft)      public interface <i>ICUCache</i></li>
+<li>(draft)      public class <i>ICUConfig</i></li>
+<li>(draft)      public final class <i>ICUData</i></li>
+<li>(draft)      public final class <i>ICUDataVersion</i></li>
+<li>(draft)      public final class <i>ICUDebug</i></li>
+<li>(draft)      public class <i>ICULocaleService</i></li>
+<li>(draft)      public static class <i>ICULocaleService.ICUResourceBundleFactory</i></li>
+<li>(draft)      public static class <i>ICULocaleService.LocaleKey</i></li>
+<li>(draft)      public static abstract class <i>ICULocaleService.LocaleKeyFactory</i></li>
+<li>(draft)      public static class <i>ICULocaleService.SimpleLocaleKeyFactory</i></li>
+<li>(draft)      public class <i>ICULogger</i></li>
+<li>(draft)      public abstract class <i>ICUNotifier</i></li>
+<li>(draft)      public class <i>ICURWLock</i></li>
+<li>(draft)      public static final class <i>ICURWLock.Stats</i></li>
+<li>(draft)      public class <i>ICUResourceBundle</i></li>
+<li>(draft)      public final class <i>ICUResourceBundleReader</i></li>
+<li>(draft)      public class <i>ICUService</i></li>
+<li>(draft)      public static interface <i>ICUService.Factory</i></li>
+<li>(draft)      public static class <i>ICUService.Key</i></li>
+<li>(draft)      public static interface <i>ICUService.ServiceListener</i></li>
+<li>(draft)      public static class <i>ICUService.SimpleFactory</i></li>
+<li>(draft)      public class <i>IllegalIcuArgumentException</i></li>
+<li><span style='color:red'>*internal*  </span>public class <i>ImplicitCEGenerator</i></li>
+<li>(draft)      public class <i>IntTrie</i></li>
+<li>(draft)      public class <i>IntTrieBuilder</i></li>
+<li>(draft)      public class <i>InvalidFormatException</i></li>
+<li>(draft)      public class <i>IterableComparator</i></li>
+<li>(draft)      public class <i>JavaTimeZone</i></li>
+<li>(draft)      public class <i>LocaleUtility</i></li>
+<li>(draft)      public class <i>MultiComparator</i></li>
+<li>(draft)      public final class <i>NormalizerImpl</i></li>
+<li>(draft)      public class <i>OlsonTimeZone</i></li>
+<li>(draft)      public class <i>PVecToTrieCompactHandler</i></li>
+<li>(draft)      public class <i>PatternTokenizer</i></li>
+<li>(draft)      public class <i>PluralRulesLoader</i></li>
+<li>(draft)      public class <i>PropsVectors</i></li>
+<li>(draft)      public static interface <i>PropsVectors.CompactHandler</i></li>
+<li>(draft)      public final class <i>Punycode</i></li>
+<li>(draft)      public class <i>RelativeDateFormat</i></li>
+<li>(draft)      public class <i>RelativeDateFormat.URelativeString</i></li>
+<li>(draft)      public class <i>ReplaceableUCharacterIterator</i></li>
+<li>(draft)      public class <i>ResourceBundleWrapper</i></li>
+<li>(draft)      public class <i>Row</i></li>
+<li>(draft)      public static class <i>Row.R2</i></li>
+<li>(draft)      public static class <i>Row.R3</i></li>
+<li>(draft)      public static class <i>Row.R4</i></li>
+<li>(draft)      public static class <i>Row.R5</i></li>
+<li>(draft)      public class <i>RuleCharacterIterator</i></li>
+<li>(draft)      public class <i>SimpleCache</i></li>
+<li>(draft)      public class <i>SortedSetRelation</i></li>
+<li>(draft)      public final class <i>StringPrepDataReader</i></li>
+<li>(draft)      public final class <i>StringUCharacterIterator</i></li>
+<li>(draft)      public class <i>TextTrieMap</i></li>
+<li>(draft)      public static interface <i>TextTrieMap.ResultHandler</i></li>
+<li>(draft)      public class <i>TimeZoneAdapter</i></li>
+<li>(draft)      public abstract class <i>Trie</i></li>
+<li>(draft)      public static interface <i>Trie.DataManipulate</i></li>
+<li>(draft)      public class <i>TrieBuilder</i></li>
+<li>(draft)      public static interface <i>TrieBuilder.DataManipulate</i></li>
+<li>(draft)      public class <i>TrieIterator</i></li>
+<li>(draft)      public final class <i>UBiDiProps</i></li>
+<li>(draft)      public final class <i>UCaseProps</i></li>
+<li>(draft)      public static interface <i>UCaseProps.ContextIterator</i></li>
+<li>(draft)      public final class <i>UCharArrayIterator</i></li>
+<li>(draft)      public class <i>UCharacterIteratorWrapper</i></li>
+<li>(draft)      public final class <i>UCharacterName</i></li>
+<li>(draft)      public interface <i>UCharacterNameChoice</i></li>
+<li>(draft)      public final class <i>UCharacterProperty</i></li>
+<li>(draft)      public final class <i>UCharacterUtility</i></li>
+<li>(draft)      public final class <i>UPropertyAliases</i></li>
+<li>(draft)      public abstract class <i>URLHandler</i></li>
+<li>(draft)      public static interface <i>URLHandler.URLVisitor</i></li>
+<li><span style='color:red'>*internal*  </span>public final class <i>USerializedSet</i></li>
+<li>(draft)      public class <i>UnicodeRegex</i></li>
+<li>(draft)      public final class <i>Utility</i></li>
+<li>(draft)      public class <i>UtilityExtensions</i></li>
+<li>(draft)      public final class <i>ZoneMeta</i></li>
+<li>(draft)      public class <i>ZoneStringFormat</i></li>
+<li>(draft)      public static class <i>ZoneStringFormat.ZoneStringInfo</i></li>
+</ul>
+
+<h3>Package com.ibm.icu.lang</h3>
+<ul>
+UProperty
+<ul>
+<li><span style='color:red'>*internal*  </span>public static final int UNDEFINED</li>
+</ul>
+</ul>
+
+<h3>Package com.ibm.icu.text</h3>
+<ul>
+<li>(draft)      public interface <i>BaseFormat</i></li>
+<li>(draft)      public interface <i>Formatter</i></li>
+<li>(draft)      public interface <i>Parser</i></li>
+<li>(draft)      public interface <i>RbnfLenientScanner</i></li>
+<li>(draft)      public interface <i>RbnfLenientScannerProvider</i></li>
+<li>(draft)      public class <i>RbnfScannerProviderImpl</i></li>
+<li>(draft)      public interface <i>Transform</i></li>
+<li>(draft)      public static final class <i>UnicodeSet.ComparisonStyle</i></li>
+Collator
+<ul>
+<li><span style='color:red'>*internal*  </span>public Collator <i>setStrength2</i>(int)</li>
+</ul>
+DateIntervalInfo
+<ul>
+<li>(stable)     public DateIntervalInfo <i>cloneAsThawed</i>()</li>
+<li>(stable)     public DateIntervalInfo <i>freeze</i>()</li>
+</ul>
+DateTimePatternGenerator
+<ul>
+<li>(stable)     public DateTimePatternGenerator <i>cloneAsThawed</i>()</li>
+<li>(stable)     public DateTimePatternGenerator <i>freeze</i>()</li>
+<li><span style='color:red'>*internal*  </span>public static DateTimePatternGenerator <i>getFrozenInstance</i>(ULocale)</li>
+<li><span style='color:red'>*internal*  </span>public boolean <i>skeletonsAreSimilar</i>(java.lang.String, java.lang.String)</li>
+</ul>
+IndexCharacters
+<ul>
+<li>(draft)      public <i>IndexCharacters</i>(ULocale, UnicodeSet, Collator)</li>
+</ul>
+RuleBasedNumberFormat
+<ul>
+<li>(draft)      public RbnfLenientScannerProvider <i>getLenientScannerProvider</i>()</li>
+<li>(draft)      public void <i>setLenientScannerProvider</i>(RbnfLenientScannerProvider)</li>
+</ul>
+UnicodeSet
+<ul>
+<li>(draft)      public <i>UnicodeSet</i>(int[])</li>
+<li>(stable)     public UnicodeSet <i>add</i>(java.util.Collection)</li>
+<li>(draft)      public UnicodeSet <i>addAll</i>(java.lang.String[])</li>
+<li>(draft)      public UnicodeSet <i>addAll</i>(java.util.Collection)</li>
+<li>(draft)      public java.lang.String[] <i>addAllTo</i>(java.lang.String[])</li>
+<li>(draft)      public java.util.Collection <i>addAllTo</i>(T)</li>
+<li>(draft)      public static java.util.Collection <i>addAllTo</i>(java.lang.Iterable, U)</li>
+<li><span style='color:red'>*internal*  </span>public UnicodeSet <i>addBridges</i>(UnicodeSet)</li>
+<li>(draft)      public static int <i>compare</i>(int, java.lang.String)</li>
+<li>(draft)      public static int <i>compare</i>(java.lang.Iterable, java.lang.Iterable)</li>
+<li>(draft)      public static int <i>compare</i>(java.lang.String, int)</li>
+<li>(draft)      public static int <i>compare</i>(java.util.Collection, java.util.Collection, UnicodeSet.ComparisonStyle)</li>
+<li>(draft)      public int <i>compareTo</i>(UnicodeSet)</li>
+<li>(draft)      public int <i>compareTo</i>(UnicodeSet, UnicodeSet.ComparisonStyle)</li>
+<li>(draft)      public int <i>compareTo</i>(java.lang.Iterable)</li>
+<li>(draft)      public boolean <i>containsAll</i>(java.util.Collection)</li>
+<li>(draft)      public boolean <i>containsNone</i>(java.util.Collection)</li>
+<li>(draft)      public final boolean <i>containsSome</i>(java.util.Collection)</li>
+<li><span style='color:red'>*internal*  </span>public int <i>findIn</i>(java.lang.CharSequence, int, boolean)</li>
+<li><span style='color:red'>*internal*  </span>public int <i>findLastIn</i>(java.lang.CharSequence, int, boolean)</li>
+<li><span style='color:red'>*internal*  </span>public static int <i>getSingleCodePoint</i>(java.lang.String)</li>
+<li>(draft)      public java.util.Iterator <i>iterator</i>()</li>
+<li>(draft)      public UnicodeSet <i>removeAll</i>(java.util.Collection)</li>
+<li>(draft)      public UnicodeSet <i>retainAll</i>(java.util.Collection)</li>
+<li>(draft)      public java.lang.Iterable <i>strings</i>()</li>
+<li>(draft)      public java.lang.String <i>stripFrom</i>(java.lang.CharSequence, boolean)</li>
+<li>(draft)      public static java.lang.String[] <i>toArray</i>(UnicodeSet)</li>
+</ul>
+</ul>
+
+<h3>Package com.ibm.icu.util</h3>
+<ul>
+<li>(draft)      public class <i>LocaleMatcher</i></li>
+<li><span style='color:red'>*internal*  </span>public static class <i>LocaleMatcher.LanguageMatcherData</i></li>
+<li>(draft)      public class <i>LocalePriorityList</i></li>
+<li><span style='color:red'>*internal*  </span>public static class <i>LocalePriorityList.LanguagePriorityListBuilder</i></li>
+Calendar
+<ul>
+<li>(draft)      public static final int IS_LEAP_MONTH</li>
+</ul>
+GlobalizationPreferences
+<ul>
+<li>(draft)      public GlobalizationPreferences <i>cloneAsThawed</i>()</li>
+<li>(draft)      public GlobalizationPreferences <i>freeze</i>()</li>
+</ul>
+HebrewCalendar
+<ul>
+<li>(draft)      public static final boolean <i>isLeapYear</i>(int)</li>
+<li>(draft)      public static int <i>monthsInYear</i>(int)</li>
+</ul>
+LocaleData
+<ul>
+<li>(draft)      public static VersionInfo <i>getCLDRVersion</i>()</li>
+</ul>
+TimeZone
+<ul>
+<li>(draft)      public static final int GENERIC_LOCATION</li>
+<li>(draft)      public static final int LONG_GENERIC</li>
+<li>(draft)      public static final int LONG_GMT</li>
+<li>(draft)      public static final int SHORT_COMMONLY_USED</li>
+<li>(draft)      public static final int SHORT_GENERIC</li>
+<li>(draft)      public static final int SHORT_GMT</li>
+<li>(draft)      public static ICULogger TimeZoneLogger</li>
+</ul>
+ULocale
+<ul>
+<li>(draft)      public java.lang.String <i>getDisplayLanguageWithDialect</i>()</li>
+<li>(draft)      public java.lang.String <i>getDisplayLanguageWithDialect</i>(ULocale)</li>
+<li>(draft)      public static java.lang.String <i>getDisplayLanguageWithDialect</i>(java.lang.String, ULocale)</li>
+<li>(draft)      public static java.lang.String <i>getDisplayLanguageWithDialect</i>(java.lang.String, java.lang.String)</li>
+<li>(draft)      public java.lang.String <i>getDisplayNameWithDialect</i>()</li>
+<li>(draft)      public java.lang.String <i>getDisplayNameWithDialect</i>(ULocale)</li>
+<li>(draft)      public static java.lang.String <i>getDisplayNameWithDialect</i>(java.lang.String, ULocale)</li>
+<li>(draft)      public static java.lang.String <i>getDisplayNameWithDialect</i>(java.lang.String, java.lang.String)</li>
+</ul>
+UResourceBundle
+<ul>
+<li><span style='color:red'>*internal*  </span>protected java.util.Set <i>handleKeySet</i>()</li>
+<li><span style='color:red'>*internal*  </span>protected boolean <i>isTopLevelResource</i>()</li>
+<li><span style='color:red'>*internal*  </span>public java.util.Set <i>keySet</i>()</li>
+</ul>
+VersionInfo
+<ul>
+<li><span style='color:red'>*internal*  </span>public static final java.lang.String ICU_DATA_VERSION_PATH</li>
+</ul>
+</ul>
+
+<hr/>
+<p><i><font size="-1">Contents generated by ReportAPI tool on Mon Oct 05 17:16:53 EDT 2009<br/>Copyright (C) 2009, 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..3baaf06
--- /dev/null
+++ b/build.properties
@@ -0,0 +1,6 @@
+#*******************************************************************************
+#* Copyright (C) 2009, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+api.report.version = 432
+api.report.prev.version = 421
diff --git a/build.xml b/build.xml
new file mode 100644
index 0000000..9521482
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,1195 @@
+<!--
+*******************************************************************************
+* Copyright (C) 1997-2009, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+-->
+<project name="icu4j" default="main" basedir=".">
+    <property file="build.properties"/>
+
+    <property name="shared.dir" value="main/shared"/>
+    <import file="${shared.dir}/build/common-targets.xml"/>
+
+    <property name="icu4j.jar.file" value="icu4j.jar"/>
+    <property name="icu4jtests.jar.file" value="icu4jtests.jar"/>
+    <property name="icu4j-core.jar.file" value="icu4j-core.jar"/>
+    <property name="icu4j-collate.jar.file" value="icu4j-collate.jar"/>
+    <property name="icu4j-charsets.jar.file" value="icu4j-charsets.jar"/>
+    <property name="icu4j-localespi.jar.file" value="icu4j-localespi.jar"/>
+    <property name="icu4j-translit.jar.file" value="icu4j-translit.jar"/>
+    <property name="icu4jdocs.jar.file" value="icu4jdocs.jar"/>
+    <property name="icu4jsrc.jar.file" value="icu4jsrc.jar"/>
+    <property name="icu4jdemos.jar.file" value="icu4jdemos.jar"/>
+
+    <property name="doc.dir" value="doc"/>
+
+    <property environment="env"/>
+
+    <!-- Java version check -->
+    <condition property="is.java6.plus">
+        <or>
+            <contains string="${java.version}" substring="1.6."/>
+            <contains string="${java.version}" substring="1.7."/>
+        </or>
+    </condition>
+    <condition property="is.java5">
+        <contains string="${java.version}" substring="1.5."/>
+    </condition>
+    <fail message="The JDK version is too old or unknown.">
+        <condition>
+            <not>
+                <or>
+                    <isset property="is.java6.plus"/>
+                    <isset property="is.java5"/>
+                </or>
+             </not>
+        </condition>
+    </fail>
+
+    <!-- Build environment info -->
+    <property name="env.COMPUTERNAME" value="${env.HOSTNAME}"/>
+    <target name="info" description="Display the build environment information">
+        <echo message="----- Build Environment Information -------------------"/>
+        <echo message="Java Home:    ${java.home}"/>
+        <echo message="Java Version: ${java.version}"/>
+        <echo message="Ant Home:     ${ant.home}"/>
+        <echo message="Ant Version:  ${ant.version}"/>
+        <echo message="OS:           ${os.name}"/>
+        <echo message="OS Version:   ${os.version}"/>
+        <echo message="OS Arch:      ${os.arch}"/>
+        <echo message="Host:         ${env.COMPUTERNAME}"/>
+        <echo message="-------------------------------------------------------"/>
+    </target>
+
+    <target name="clean" description="Clean up build outputs">
+        <ant dir="${icu4j.core.dir}" target="clean" inheritAll="false"/>
+        <ant dir="${icu4j.collate.dir}" target="clean" inheritAll="false"/>
+        <ant dir="${icu4j.charset.dir}" target="clean" inheritAll="false"/>
+        <ant dir="${icu4j.localespi.dir}" target="clean" inheritAll="false"/>
+        <ant dir="${icu4j.translit.dir}" target="clean" inheritAll="false"/>
+        <ant dir="${icu4j.test-framework.dir}" target="clean" inheritAll="false"/>
+        <ant dir="${icu4j.core-tests.dir}" target="clean" inheritAll="false"/>
+        <ant dir="${icu4j.collate-tests.dir}" target="clean" inheritAll="false"/>
+        <ant dir="${icu4j.charset-tests.dir}" target="clean" inheritAll="false"/>
+        <ant dir="${icu4j.localespi-tests.dir}" target="clean" inheritAll="false"/>
+        <ant dir="${icu4j.translit-tests.dir}" target="clean" inheritAll="false"/>
+        <ant dir="${icu4j.build-tools.dir}" target="clean" inheritAll="false"/>
+        <ant dir="${icu4j.tools.dir}" target="clean" inheritAll="false"/>
+        <ant dir="${icu4j.demos.dir}" target="clean" inheritAll="false"/>
+
+        <!-- delete all .jar files in icu4j root directory -->
+        <delete>
+            <fileset dir="." includes="*.jar"/>
+        </delete>
+
+        <delete dir="${doc.dir}"/>
+        <delete dir="${out.dir}"/>
+        <delete dir="${module.dir}"/>
+    </target>
+
+    <!-- meta build targets -->
+    <target name="all" depends="info, main, tests, localespi, localespi-tests, build-tools, tools, demos, jar, docs" description="Build all primary targets"/>
+    <target name="main" depends="info, core, collate, charset, translit" description="Build ICU4J API classes"/>
+    <target name="tests" depends="info, core-tests, charset-tests, collate-tests, translit-tests" description="Build ICU4J API test classes"/>
+    <target name="releaseJar" depends="info, jar, jarDocs, jarSrc" description="Build all jar files for distribution"/>
+
+    <target name="secure" depends="icu4jJar" description="(Deprecated)Build ICU4J API and test classes for running the ICU4J test suite with Java security manager enabled"/>
+    
+    <!-- Check to see if JVM_OPTIONS enviroment variable is set. This can be use to set the heap size. -->
+    <property name="env.JVM_OPTIONS" value=""/>
+    <property name="jvm_options" value="${env.JVM_OPTIONS}"/>
+    <target name="check" description="Run the standard ICU4J test suite">
+        <antcall target="_runCheck">
+            <param name="runcheck.arg" value="-n"/>
+            <param name="runcheck.jvmarg" value="${jvm_options}"/>
+        </antcall>
+    </target>
+
+    <target name="exhaustiveCheck" description="Run the standard ICU4J test suite in exhaustive mode">
+        <antcall target="_runCheck">
+            <param name="runcheck.arg" value="-n -e10"/>
+            <param name="runcheck.jvmarg" value="${jvm_options}"/>
+        </antcall>
+    </target>
+
+    <target name="timeZoneCheck" description="Run the complete test for TimeZoneRoundTripAll">
+        <antcall target="_runCheck">
+            <param name="runcheck.arg" value="-n -e10 Core/Format/DateFormat/TimeZoneFormatTest"/>
+            <param name="runcheck.jvmarg" value="${jvm_options} -DTimeZoneRoundTripAll=true"/>
+        </antcall>
+    </target>
+
+    <target name="jdktzCheck" description="Run the standard ICU4J test suite with JDK TimeZone">
+        <antcall target="_runCheck">
+            <param name="runcheck.arg" value="-n"/>
+            <param name="runcheck.jvmarg" value="${jvm_options} -Dcom.ibm.icu.util.TimeZone.DefaultTimeZoneType=JDK"/>
+        </antcall>
+    </target>
+
+    <target name="_runCheck" depends="main, tests">
+        <echo message="JVM argument:   ${runcheck.jvmarg} -Djava.awt.headless=true"/>
+        <echo message="Test argument:   ${runcheck.arg}"/>
+
+        <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
+            <arg line="${runcheck.arg}"/>
+            <jvmarg line="${runcheck.jvmarg} -Djava.awt.headless=true"/>
+            <classpath>
+                <pathelement path="${icu4j.core.jar}"/>
+                <pathelement path="${icu4j.collate.jar}"/>
+                <pathelement path="${icu4j.charset.jar}"/>
+                <pathelement path="${icu4j.translit.jar}"/>
+                <pathelement path="${icu4j.test-framework.jar}"/>
+                <pathelement path="${icu4j.core-tests.jar}"/>
+                <pathelement path="${icu4j.collate-tests.jar}"/> 
+                <pathelement path="${icu4j.charset-tests.jar}"/>
+                <pathelement path="${icu4j.translit-tests.jar}"/>
+            </classpath>
+        </java>
+    </target>
+
+    <target name="coreCheck" depends="info, core, core-tests" description="Run only the core tests">
+        <java classname="com.ibm.icu.dev.test.TestAllCore" fork="yes" failonerror="true">
+            <arg line="-n"/>
+            <classpath>
+                <pathelement path="${icu4j.core.jar}"/>
+                <pathelement path="${icu4j.charset.jar}"/>
+                <pathelement path="${icu4j.test-framework.jar}"/>
+                <pathelement path="${icu4j.core-tests.jar}"/>
+            </classpath>
+        </java>
+    </target>
+
+    <target name="collateCheck" depends="info, core, collate, collate-tests" description="Run the only collation tests">
+        <java classname="com.ibm.icu.dev.test.TestAllCollate" fork="yes" failonerror="true">
+            <arg line="-n"/>
+            <classpath>
+                <pathelement path="${icu4j.core.jar}"/>
+                <pathelement path="${icu4j.collate.jar}"/>
+                <pathelement path="${icu4j.test-framework.jar}"/>
+                <pathelement path="${icu4j.collate-tests.jar}"/>
+            </classpath>
+        </java>
+    </target>
+
+    <target name="translitCheck" depends="info, core, translit, translit-tests" description="Run the ICU4J Translit test suite">
+        <java classname="com.ibm.icu.dev.test.TestAllTranslit" fork="yes" failonerror="true">
+            <arg line="-n"/>
+            <classpath>
+                <pathelement path="${icu4j.core.jar}"/>
+                <pathelement path="${icu4j.translit.jar}"/>
+                <pathelement path="${icu4j.test-framework.jar}"/>
+                <pathelement path="${icu4j.translit-tests.jar}"/>
+            </classpath>
+        </java>
+    </target>
+
+    <target name="localespiCheck" if="is.java6.plus" depends="info" description="Run the ICU4J Locale SPI test suite">
+        <antcall target="_runLocalespiCheck"/>
+    </target>
+
+    <target name="_runLocalespiCheck" depends="localespi, localespi-tests">
+        <java classname="com.ibm.icu.dev.test.localespi.TestAll" fork="yes" failonerror="true">
+            <jvmarg line="-Djava.ext.dirs=${icu4j.core.dir}/${jar.dir}${path.separator}${icu4j.localespi.dir}/${jar.dir}${path.separator}${icu4j.collate.dir}/${jar.dir}${path.separator}${java.ext.dirs}"/>
+            <arg value="-n"/>
+            <classpath>
+                <pathelement path="${icu4j.localespi-tests.jar}"/>
+                <pathelement path="${icu4j.test-framework.jar}"/>
+            </classpath>
+        </java>
+    </target>
+
+    <target name="secureCheck" depends="main, jar, icu4jtestsJar" description="Run the secure (applet-like) ICU4J test suite">
+        <property name="securecheck.arg" value="-n -w"/>
+        <property name="securecheck.jvmarg"
+                value="${jvm_options} -Djava.security.manager -Djava.security.policy=${shared.dir}/data/security.policy -Djava.awt.headless=true"/>
+
+        <echo message="JVM argument:   ${securecheck.jvmarg}"/>
+        <echo message="Test argument:  ${securecheck.arg}"/>
+
+        <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
+            <arg line="${securecheck.arg}"/>
+            <jvmarg line="${securecheck.jvmarg}"/>
+            <classpath>
+                <pathelement path="${icu4j.jar.file}"/>
+                <pathelement path="${icu4j-charsets.jar.file}"/>
+                <pathelement path="${icu4jtests.jar.file}"/>
+            </classpath>
+        </java>
+    </target>
+
+    <!-- jar targets -->
+    <target name="jar" depends="main, icu4jJar" description="Build ICU4J API jar files">
+        <copy file="${icu4j.core.jar}" tofile="${icu4j-core.jar.file}"/>
+        <copy file="${icu4j.collate.jar}" tofile="${icu4j-collate.jar.file}"/>
+        <copy file="${icu4j.charset.jar}" tofile="${icu4j-charsets.jar.file}"/>
+        <copy file="${icu4j.localespi.jar}" tofile="${icu4j-localespi.jar.file}" failonerror="false"/>
+        <copy file="${icu4j.translit.jar}" tofile="${icu4j-translit.jar.file}"/>
+    </target>
+
+    <target name="icu4jJar" depends="info, core, collate, translit" description="Build ICU4J all-in-one core jar">
+        <mkdir dir="${out.dir}"/>
+
+        <!-- manifest -->
+        <copy file="${icu4j.core.dir}/manifest.stub" todir="${out.dir}">
+            <filterset>
+                <filter token="SPECVERSION" value="${jar.spec.version}"/>
+                <filter token="IMPLVERSION" value="${jar.impl.version}"/>
+                <filter token="COPYRIGHT" value="${jar.copyright.info}"/>
+            </filterset>
+        </copy>
+
+        <!-- jar -->
+        <jar jarfile="${icu4j.jar.file}"
+                compress="true"
+                manifest="${out.dir}/manifest.stub">
+            <fileset dir="${icu4j.core.dir}/${bin.dir}" includes="**/*"/>
+            <fileset dir="${icu4j.collate.dir}/${bin.dir}" includes="**/*"/>
+            <fileset dir="${icu4j.translit.dir}/${bin.dir}" includes="**/*"/>
+            <fileset dir="${shared.dir}/licenses">
+                <include name="license.html"/>
+                <include name="unicode-license.txt"/>
+            </fileset>
+        </jar>
+    </target>
+
+    <target name="icu4jtestsJar" depends="info, tests" description="Build ICU4J all-in-one test jar">
+        <jar jarfile="${icu4jtests.jar.file}"
+                compress="true">
+            <fileset dir="${icu4j.test-framework.dir}/${bin.dir}" includes="**/*"/>
+            <fileset dir="${icu4j.core-tests.dir}/${bin.dir}" includes="**/*"/>
+            <fileset dir="${icu4j.collate-tests.dir}/${bin.dir}" includes="**/*"/>
+            <fileset dir="${icu4j.translit-tests.dir}/${bin.dir}" includes="**/*"/>
+            <fileset dir="${icu4j.charset-tests.dir}/${bin.dir}" includes="**/*"/>
+        </jar>
+    </target>
+
+    <target name="jarDocs" depends="docs" description="Build ICU4J API doc jar file">
+        <jar jarfile="${icu4jdocs.jar.file}" compress="true" basedir="${doc.dir}"/>
+    </target>
+
+    <target name="jarSrc" description="Build ICU4J source jar file">
+        <jar jarfile="${icu4jsrc.jar.file}" compress="true">
+            <fileset dir=".">
+                <include name="main/**/*"/>
+                <include name="demos/**/*"/>
+                <include name="tools/**/*"/>
+                <include name="*.html"/>
+                <include name="*.xml"/>
+                <exclude name="**/out/**/*"/>
+            </fileset>
+        </jar>
+    </target>
+
+    <target name="jarDemos" depends="demos" description="Build ICU4J demo jar file">
+        <copy file="${icu4j.demos.jar}" tofile="${icu4jdemos.jar.file}"/>
+    </target>
+
+    <!-- compile targets -->
+    <target name="core" description="Build core classes">
+        <ant dir="${icu4j.core.dir}" inheritAll="false"/>
+    </target>
+
+    <target name="collate" depends="core" description="Build collation classes">
+        <ant dir="${icu4j.collate.dir}" inheritAll="false"/>
+    </target>
+
+    <target name="charset" depends="core" description="Build charset classes">
+        <ant dir="${icu4j.charset.dir}" inheritAll="false"/>
+    </target>
+
+    <target name="localespi" if="is.java6.plus" description="Build Locale SPI classes">
+        <antcall target="_build-localespi"/>
+    </target>
+
+    <target name="_build-localespi" depends="core, collate">
+        <ant dir="${icu4j.localespi.dir}" inheritAll="false"/>
+    </target>
+
+    <target name="translit" depends="core" description="Build translit classes">
+        <ant dir="${icu4j.translit.dir}" inheritAll="false"/>
+    </target>
+
+    <target name="test-framework" depends="core" description="Build test framework classes">
+        <ant dir="${icu4j.test-framework.dir}" inheritAll="false"/>
+    </target>
+
+    <target name="core-tests" depends="core, test-framework" description="Build core tests">
+        <ant dir="${icu4j.core-tests.dir}" inheritAll="false"/>
+    </target>
+
+    <target name="collate-tests" depends="collate, test-framework" description="Build core tests">
+        <ant dir="${icu4j.collate-tests.dir}" inheritAll="false"/>
+    </target>
+
+    <target name="charset-tests" depends="charset, test-framework" description="Build charset tests">
+        <ant dir="${icu4j.charset-tests.dir}" inheritAll="false"/>
+    </target>
+
+    <target name="localespi-tests" if="is.java6.plus" description="Build Locale SPI tests">
+        <antcall target="_build-localespi-tests"/>
+    </target>
+
+    <target name="_build-localespi-tests" depends="localespi, test-framework">
+        <ant dir="${icu4j.localespi-tests.dir}" inheritAll="false"/>
+    </target>
+
+    <target name="translit-tests" depends="translit, test-framework" description="Build translit tests">
+        <ant dir="${icu4j.translit-tests.dir}" inheritAll="false"/>
+    </target>
+
+    <target name="demos" depends="core, charset, translit" description="Build demo classes">
+        <ant dir="${icu4j.demos.dir}" inheritAll="false"/>
+    </target>
+
+    <target name="build-tools" description="Build build-tool classes">
+        <ant dir="${icu4j.build-tools.dir}" inheritAll="false"/>
+    </target>
+
+    <target name="tools" depends="core, core-tests" description="Build tool classes">
+        <ant dir="${icu4j.tools.dir}" inheritAll="false"/>
+    </target>
+
+    <!-- doc targets -->
+    <target name="docs" depends="info, build-tools" description="Build API documents">
+        <javadoc
+                destdir="${doc.dir}"
+                nodeprecatedlist="true"
+                windowtitle="icu4j"
+                doctitle="icu4j"
+                encoding="iso-8859-1"
+                docencoding="iso-8859-1"
+                bottom="&lt;font size=-1&gt;Copyright (c) ${current.year} IBM Corporation and others.&lt;/font&gt;"
+                additionalparam="-breakiterator -use -tagletpath ${icu4j.build-tools.jar} -taglet com.ibm.icu.dev.tool.docs.ICUTaglet"
+                link="http://java.sun.com/javase/6/docs/api/"
+                source="1.5">
+            <packageset dir="${icu4j.core.dir}/src">
+                <include name="com/ibm/icu/lang/**"/>
+                <include name="com/ibm/icu/math/**"/>
+                <include name="com/ibm/icu/text/**"/>
+                <include name="com/ibm/icu/util/**"/>
+            </packageset>
+            <packageset dir="${icu4j.collate.dir}/src">
+                <include name="com/ibm/icu/text/**"/>
+            </packageset>
+            <packageset dir="${icu4j.translit.dir}/src">
+                <include name="com/ibm/icu/text/**"/>
+            </packageset>
+            <packageset dir="${icu4j.charset.dir}/src">
+                <include name="com/ibm/icu/charset/**"/>
+            </packageset>
+        </javadoc>
+    </target>
+
+    <!-- Code coverage target -->
+    <property name="clover.out.dir" value="${out.dir}/clover"/>
+    <property name="clover.jar" location="${env.CLOVER_DIR}/clover.jar"/>
+    <taskdef resource="cloverlib.xml" classpath="${clover.jar}" onerror="ignore"/>
+
+    <target name="codeCoverage" depends="clean" description="Generate code coverage report with clover">
+        <!-- Set up clover -->
+        <mkdir dir="${clover.out.dir}"/>
+        <clover-setup initstring="${clover.out.dir}/clover.db">
+            <files>
+                <exclude name="**/dev/**/*.java"/>
+            </files>
+            <methodContext name="API" regexp="(.* )?public .*"/>
+        </clover-setup>
+
+        <!-- Build components with clover instrumentation -->
+        <ant dir="${icu4j.core.dir}" inheritAll="false" inheritRefs="true">
+            <property name="build.compiler" value="${build.compiler}"/>
+        </ant>
+        <ant dir="${icu4j.collate.dir}" inheritAll="false" inheritRefs="true">
+            <property name="build.compiler" value="${build.compiler}"/>
+        </ant>
+        <ant dir="${icu4j.charset.dir}" inheritAll="false" inheritRefs="true">
+            <property name="build.compiler" value="${build.compiler}"/>
+        </ant>
+        <ant dir="${icu4j.translit.dir}" inheritAll="false" inheritRefs="true">
+            <property name="build.compiler" value="${build.compiler}"/>
+        </ant>
+        <ant dir="${icu4j.test-framework.dir}" inheritAll="false" inheritRefs="true">
+            <property name="build.compiler" value="${build.compiler}"/>
+        </ant>
+        <ant dir="${icu4j.core-tests.dir}" inheritAll="false" inheritRefs="true">
+            <property name="build.compiler" value="${build.compiler}"/>
+        </ant>
+        <ant dir="${icu4j.collate-tests.dir}" inheritAll="false" inheritRefs="true">
+            <property name="build.compiler" value="${build.compiler}"/>
+        </ant>
+        <ant dir="${icu4j.charset-tests.dir}" inheritAll="false" inheritRefs="true">
+            <property name="build.compiler" value="${build.compiler}"/>
+        </ant>
+        <ant dir="${icu4j.translit-tests.dir}" inheritAll="false" inheritRefs="true">
+            <property name="build.compiler" value="${build.compiler}"/>
+        </ant>
+
+        <!-- Run the test suites -->
+        <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
+            <arg value="-n"/>
+            <classpath>
+                <pathelement path="${icu4j.core.jar}"/>
+                <pathelement path="${icu4j.collate.jar}"/>
+                <pathelement path="${icu4j.charset.jar}"/>
+                <pathelement path="${icu4j.translit.jar}"/>
+                <pathelement path="${icu4j.test-framework.jar}"/>
+                <pathelement path="${icu4j.core-tests.jar}"/>
+                <pathelement path="${icu4j.collate-tests.jar}"/>
+                <pathelement path="${icu4j.charset-tests.jar}"/>
+                <pathelement path="${icu4j.translit-tests.jar}"/>
+                <pathelement path="${clover.jar}"/>
+            </classpath>
+        </java>
+
+        <!-- Generate HTML coverage report -->
+        <clover-html-report outdir="${clover.out.dir}/html" title="ICU4J Code Coverage"/>
+    </target>
+
+    <!-- Release management targets -->
+    <target name="checktags" depends="info, build-tools" description="Check API tags before release">
+        <javadoc source="1.5">
+            <packageset dir="${icu4j.core.dir}/src">
+                <include name="com/ibm/icu/lang/**"/>
+                <include name="com/ibm/icu/math/**"/>
+                <include name="com/ibm/icu/text/**"/>
+                <include name="com/ibm/icu/util/**"/>
+            </packageset>
+            <packageset dir="${icu4j.collate.dir}/src">
+                <include name="com/ibm/icu/**"/>
+            </packageset>
+            <packageset dir="${icu4j.charset.dir}/src">
+                <include name="com/ibm/icu/charset/**"/>
+            </packageset>
+            <doclet name="com.ibm.icu.dev.tool.docs.CheckTags" path="${icu4j.build-tools.jar}"/>
+        </javadoc>
+    </target>
+
+    <target name="gatherapi" depends="info, build-tools" description="Run API database generator tool">
+        <mkdir dir="${out.dir}"/>
+        <javadoc source="1.5">
+            <packageset dir="${icu4j.core.dir}/src">
+                <include name="com/ibm/icu/lang/**"/>
+                <include name="com/ibm/icu/math/**"/>
+                <include name="com/ibm/icu/text/**"/>
+                <include name="com/ibm/icu/util/**"/>
+            </packageset>
+            <packageset dir="${icu4j.collate.dir}/src">
+                <include name="com/ibm/icu/**"/>
+            </packageset>
+            <packageset dir="${icu4j.charset.dir}/src">
+                <include name="com/ibm/icu/charset/**"/>
+            </packageset>
+            <packageset dir="${icu4j.translit.dir}/src">
+                <include name="com/ibm/icu/**"/>
+            </packageset>
+            <doclet name="com.ibm.icu.dev.tool.docs.GatherAPIData" path="${icu4j.build-tools.jar}">
+                <param name="-name" value="ICU4J ${icu4j.impl.version}"/>
+                <param name="-output" value="${out.dir}/icu4j${api.report.version}.api"/>
+                <param name="-internal"/>
+                <param name="-gzip"/>
+            </doclet>
+        </javadoc>
+    </target>
+
+    <target name="apireport" depends="info, gatherapi" description="Run API report generator tool">
+        <java classname="com.ibm.icu.dev.tool.docs.ReportAPI"
+                classpath="${icu4j.build-tools.jar}"
+                failonerror="true">
+            <arg value="-old:" />
+            <arg value="${icu4j.build-tools.dir}/icu4j${api.report.prev.version}.api.gz" />
+            <arg value="-new:" />
+            <arg value="${out.dir}/icu4j${api.report.version}.api.gz" />
+            <arg value="-html" />
+            <arg value="-internal" />
+            <arg value="-out:" />
+            <arg value="${out.dir}/icu4j_compare_${api.report.prev.version}_${api.report.version}.html" />
+        </java>
+    </target>
+
+    <target name="swatDeprecated" depends="build-tools" description="Convert @deprecated @draft tags to @provisional">
+        <antcall target="_runSwatDeprecated">
+            <param name="swat.deprecated.opt" value="-dep"/>
+        </antcall>
+    </target>
+
+    <target name="swatProvisional" depends="build-tools" description="Convert @provisional tags to @deprecated @draft">
+        <antcall target="_runSwatDeprecated">
+            <param name="swat.deprecated.opt" value="-prov"/>
+        </antcall>
+    </target>
+
+    <target name="_runSwatDeprecated">
+        <java classname="com.ibm.icu.dev.tool.docs.SwatDeprecated"
+                classpath="${icu4j.build-tools.jar}"
+                failonerror="true">
+            <arg value="${swat.deprecated.opt}"/>
+            <arg value="-src"/>
+            <arg value="${icu4j.core.dir}/src"/>
+            <arg value="-dst"/>
+            <arg value="${icu4j.core.dir}/src"/>
+            <arg value="-overwrite"/>
+            <arg value="-verbose"/>
+        </java>
+        <java classname="com.ibm.icu.dev.tool.docs.SwatDeprecated"
+                classpath="${icu4j.build-tools.jar}"
+                failonerror="true">
+            <arg value="${swat.deprecated.opt}"/>
+            <arg value="-src"/>
+            <arg value="${icu4j.charset.dir}/src"/>
+            <arg value="-dst"/>
+            <arg value="${icu4j.charset.dir}/src"/>
+            <arg value="-overwrite"/>
+            <arg value="-verbose"/>
+        </java>
+    </target>
+
+
+    <!-- Special packaging targets -->
+    <target name="translitIMEJar" depends="info" description="Build transliterator IME 'icutransime.jar' jar file">
+        <property name="translit.ime.out.dir" value="${out.dir}/translit_ime"/>
+ 
+        <mkdir dir="${translit.ime.out.dir}/bin"/>
+        <javac destdir="${translit.ime.out.dir}/bin"
+                source="${javac.source}"
+                target="${javac.target}"
+                debug="on" deprecation="off">
+            <src path="${icu4j.core.dir}/src"/>
+            <src path="${icu4j.translit.dir}/src"/>
+            <src path="${icu4j.tools.dir}/src"/>
+            <include name="com/ibm/icu/dev/tool/ime/translit/*.java"/>
+        </javac>
+
+        <copy file="${icu4j.tools.dir}/src/com/ibm/icu/dev/tool/ime/translit/Transliterator.properties"
+                todir="${translit.ime.out.dir}/bin/com/ibm/icu/dev/tool/ime/translit"/>
+
+        <mkdir dir="${translit.ime.out.dir}/lib"/>
+        <jar jarfile="${translit.ime.out.dir}/lib/icutransime.jar"
+                compress="true"
+                basedir="${translit.ime.out.dir}/bin"
+                includes="com/ibm/icu/dev/tool/ime/translit/**/*"
+                manifest="${icu4j.tools.dir}/src/com/ibm/icu/dev/tool/ime/translit/manifest.stub">
+            <metainf dir="${icu4j.tools.dir}/src/com/ibm/icu/dev/tool/ime/translit" includes="services/*" />
+        </jar>
+    </target>
+
+    <target name="indicIMEJar" depends="info" description="Build indic IME 'icuindicime.jar' jar file">
+        <property name="indic.ime.out.dir" value="${out.dir}/indic_ime"/>
+ 
+        <mkdir dir="${indic.ime.out.dir}/bin"/>
+        <javac destdir="${indic.ime.out.dir}/bin"
+                source="${javac.source}"
+                target="${javac.target}"
+                debug="on" deprecation="off">
+            <src path="${icu4j.core.dir}/src"/>
+            <src path="${icu4j.tools.dir}/src"/>
+            <include name="com/ibm/icu/dev/tool/ime/indic/*.java"/>
+        </javac>
+
+        <copy file="${icu4j.tools.dir}/src/com/ibm/icu/dev/tool/ime/indic/DisplayNames.properties"
+                todir="${indic.ime.out.dir}/bin/com/ibm/icu/dev/tool/ime/indic"/>
+
+        <mkdir dir="${indic.ime.out.dir}/lib"/>
+        <jar jarfile="${indic.ime.out.dir}/lib/icuindicime.jar"
+                compress="true"
+                basedir="${indic.ime.out.dir}/bin"
+                includes="com/ibm/icu/dev/tool/ime/indic/**/*"
+                manifest="${icu4j.tools.dir}/src/com/ibm/icu/dev/tool/ime/indic/manifest.stub">
+            <metainf dir="${icu4j.tools.dir}/src/com/ibm/icu/dev/tool/ime/indic" includes="services/*" />
+        </jar>
+    </target>
+
+    <target name="cldrUtil" depends="info" description="Build Utilities for CLDR">
+        <property name="cldr.util.out.dir" value="${out.dir}/cldr_util"/>
+        <mkdir dir="${cldr.util.out.dir}/bin"/>
+
+        <javac destdir="${cldr.util.out.dir}/bin"
+                source="${javac.source}"
+                target="${javac.target}"
+                debug="on" deprecation="off">
+
+            <src path="${icu4j.core.dir}/src"/>
+            <src path="${icu4j.translit.dir}/src"/>
+            <src path="${icu4j.core-tests.dir}/src"/> <!-- still needed? -->
+            <src path="${icu4j.translit-tests.dir}/src"/>
+            <src path="${icu4j.test-framework.dir}/src"/>
+            <src path="${icu4j.tools.dir}/src"/>
+
+            <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>
+
+        <mkdir dir="${cldr.util.out.dir}/lib"/>
+        <jar jarfile="${cldr.util.out.dir}/lib/utilities.jar"
+                compress="true"
+                basedir="${cldr.util.out.dir}/bin">
+            <include name="com/ibm/icu/dev/test/util/*.class"/>
+            <include name="com/ibm/icu/dev/test/TestFmwk*.class"/>
+            <include name="com/ibm/icu/dev/test/AbstractTest*.class"/>
+            <include name="com/ibm/icu/dev/test/TestLog*.class"/>
+            <include name="com/ibm/icu/dev/tool/UOption*.class"/>
+        </jar>
+    </target>
+
+    <target name="xliff" description="Build xliff converter tool">
+        <property name="xliff.out.dir" value="${out.dir}/xliff"/>
+
+        <mkdir dir="${xliff.out.dir}/bin"/>
+        <javac destdir="${xliff.out.dir}/bin"
+                source="1.3"
+                target="1.3"
+                debug="on" deprecation="off">
+            <src path="${icu4j.tools.dir}/src"/>
+            <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"/>
+       </javac>
+
+        <mkdir dir="${xliff.out.dir}/lib"/>
+
+        <jar jarfile="${xliff.out.dir}/lib/xliff-src.jar"
+                compress="true"
+                basedir="${icu4j.tools.dir}/src">
+            <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"/>
+        </jar>
+
+        <jar jarfile="${xliff.out.dir}/lib/xliff.jar"
+                compress="true"
+                basedir="${xliff.out.dir}/bin"
+                manifest="${icu4j.tools.dir}/src/com/ibm/icu/dev/tool/localeconverter/manifest.stub"/>
+    </target>
+
+
+    <!-- ICU4J modularization targets -->
+    <property name="module.dir" value="${out.dir}/module"/>
+    <property name="module.bin.dir" value="${module.dir}/bin"/>
+    <property name="module.tests.dir" value="${module.dir}/tests"/>
+    <property name="module.jar.dir" value="${module.dir}/lib"/>
+    <property name="module.jar" value="${module.jar.dir}/icu4j-module.jar"/>
+
+    <target name="moduleJar" description="Create a ICU4J module jar file">
+        <mkdir dir="${module.jar.dir}"/>
+        <jar jarfile="${module.jar}"
+                compress="true"
+                basedir="${module.bin.dir}">
+            <manifest>
+                <attribute name="Built-By" value="${corp}" />
+                <section name="com/ibm/icu">
+                    <attribute name="Specification-Title" value="ICU4J Modularized Build" />
+                    <attribute name="Specification-Version" value="${jar.spec.version}" />
+                    <attribute name="Specification-Vendor" value="ICU" />
+                    <attribute name="Implementation-Title" value=" ICU for Java Module" />
+                    <attribute name="Implementation-Version" value="${jar.impl.version}" />
+                    <attribute name="Implementation-Vendor" value="${corp}" />
+                    <attribute name="Implementation-Vendor-Id" value="com.ibm" />
+                    <attribute name="Copyright-Info" value="${jar.copyright.info}" />
+                    <attribute name="Sealed" value="false" />
+                </section>
+            </manifest>
+        </jar>
+        <copy file="${module.jar}" tofile="icu4j.jar"/>
+    </target>
+
+    <target name="moduleCheck" description="Run tests for a ICU4J module jar">
+        <java classname="com.ibm.icu.dev.test.TestAll" fork="yes" failonerror="true">
+            <arg value="-nothrow"/>
+            <arg value="-nodata"/>
+            <classpath>
+                <pathelement path="${module.jar}"/>
+                <pathelement location="${module.tests.dir}"/>
+            </classpath>
+        </java>
+    </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"/>
+        <include name="com/ibm/icu/dev/test/TestAllCore.java"/>
+    </patternset>
+
+    <!-- Break Iterator -->
+    <target name="breakIterator" depends="_copyFullPropsData" description="Modular build of break iterator services">
+        <mkdir dir="${module.bin.dir}"/>
+        <javac srcdir="${icu4j.core.dir}/src"
+                destdir="${module.bin.dir}"
+                source="${javac.source}"
+                target="${javac.target}"
+                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="Modular build of break iterator test suite">
+        <mkdir dir="${module.tests.dir}"/>
+        <javac destdir="${module.tests.dir}"
+                source="${javac.source}"
+                target="${javac.target}"
+                classpath="${module.bin.dir}"
+                debug="on" deprecation="off">
+            <src path="${icu4j.core.dir}/src"/>
+            <src path="${icu4j.test-framework.dir}/src"/>
+            <src path="${icu4j.core-tests.dir}/src"/>
+
+            <patternset refid="common.test.sources"/>
+            <include name="com/ibm/icu/dev/test/rbbi/**/*.java"/>
+        </javac>
+
+        <copy file="${icu4j.core-tests.dir}/src/com/ibm/icu/dev/test/rbbi/rbbitst.txt"
+                todir="${module.tests.dir}/com/ibm/icu/dev/test/rbbi"/>
+    </target>
+
+    <!-- Calendar -->
+    <target name="calendar" description="Modular build of calendar services">
+        <mkdir dir="${module.bin.dir}"/>
+        <javac srcdir="${icu4j.core.dir}/src"
+                destdir="${module.bin.dir}"
+                source="${javac.source}"
+                target="${javac.target}"
+                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>
+
+        <!-- Calendar does not require Collation data, BreakIterator data -->
+        <unjar src="${icu4j.data.jar}" dest="${module.bin.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" />
+            </patternset>
+        </unjar>
+    </target>
+
+    <target name="calendarTests" depends="calendar" description="Modular build of calendar test suite">
+        <mkdir dir="${module.tests.dir}"/>
+        <javac destdir="${module.tests.dir}"
+                source="${javac.source}"
+                target="${javac.target}"
+                classpath="${module.bin.dir}"
+                debug="on" deprecation="off">
+            <src path="${icu4j.core.dir}/src"/>
+            <src path="${icu4j.test-framework.dir}/src"/>
+            <src path="${icu4j.core-tests.dir}/src"/>
+
+            <patternset refid="common.test.sources"/>
+            <include name="com/ibm/icu/dev/test/calendar/**/*.java" />
+        </javac>
+
+        <unjar src="${icu4j.testdata.jar}" dest="${module.tests.dir}">
+            <patternset>
+                <include name="**/calendar.res"/>
+            </patternset>
+        </unjar>
+    </target>
+
+    <!-- Collator -->
+    <!-- this module will soon be obsolete, use the collate jar -->
+    <target name="collator" description="Modular build of collator services">
+        <mkdir dir="${module.bin.dir}"/>
+        <javac  destdir="${module.bin.dir}"
+                source="${javac.source}"
+                target="${javac.target}"
+                debug="on" deprecation="off">
+            <src path="${icu4j.core.dir}/src"/>
+            <src path="${icu4j.collate.dir}/src"/>
+
+            <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>
+
+        <unjar src="${icu4j.data.jar}" dest="${module.bin.dir}">
+            <patternset>
+                <include name="**/*.icu"/>
+                <include name="**/coll/*.res"/>
+                <include name="**/*.brk"/>
+                <include name="**/icudt${icu4j.data.version}b/res_index.res"/>
+            </patternset>
+        </unjar>
+    </target>
+
+    <target name="collatorTests" depends="collator" description="Modular build of collator test suite">
+        <mkdir dir="${module.tests.dir}"/>
+        <javac destdir="${module.tests.dir}"
+                source="${javac.source}"
+                target="${javac.target}"
+                classpath="${module.bin.dir}"
+                debug="on" deprecation="off">
+            <src path="${icu4j.core.dir}/src"/>
+            <src path="${icu4j.test-framework.dir}/src"/>
+            <src path="${icu4j.collate-tests.dir}/src"/>
+
+            <patternset refid="common.test.sources"/>
+            <include name="com/ibm/icu/dev/test/TestAllCollate.java"/>
+            <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"/>
+            <exclude name="com/ibm/icu/dev/test/collator/IndexCharactersTest.java"/>
+        </javac>
+
+        <unjar src="${icu4j.testdata.jar}" dest="${module.tests.dir}">
+            <patternset>
+                <include name="**/DataDrivenCollationTest.res"/>
+            </patternset>
+        </unjar>
+        <copy todir="${module.tests.dir}">
+            <fileset dir="${icu4j.collate-tests.dir}/src">
+                <include name="com/ibm/icu/dev/data/riwords.txt"/>
+                <include name="com/ibm/icu/dev/data/CollationTest_*.txt"/>
+            </fileset>
+        </copy>
+    </target>
+
+    <!-- Compression -->
+    <target name="compression" description="Modular build of compression services">
+        <mkdir dir="${module.bin.dir}"/>
+        <javac srcdir="${icu4j.core.dir}/src"
+                destdir="${module.bin.dir}"
+                source="${javac.source}"
+                target="${javac.target}"
+                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="Modular build of compression test suite">
+        <mkdir dir="${module.tests.dir}"/>
+        <javac destdir="${module.tests.dir}"
+                source="${javac.source}"
+                target="${javac.target}"
+                classpath="${module.bin.dir}"
+                debug="on" deprecation="off">
+            <src path="${icu4j.core.dir}/src"/>
+            <src path="${icu4j.test-framework.dir}/src"/>
+            <src path="${icu4j.core-tests.dir}/src"/>
+
+            <patternset refid="common.test.sources"/>
+            <include name="com/ibm/icu/dev/test/compression/**/*.java"/>
+        </javac>
+    </target>
+
+    <!-- Format -->
+    <target name="format" description="Modular build of format services">
+        <mkdir dir="${module.bin.dir}"/>
+        <javac srcdir="${icu4j.core.dir}/src"
+                destdir="${module.bin.dir}"
+                source="${javac.source}"
+                target="${javac.target}"
+                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>
+
+        <!-- Format does not require BreakIterator data -->
+        <unjar src="${icu4j.data.jar}" dest="${module.bin.dir}">
+            <patternset>
+                <include name="**/*.icu"/>
+                <include name="**/*.res"/>
+                <exclude name="**/translit/*.res"/>
+            </patternset>
+        </unjar>
+    </target>
+
+    <target name="formatTests" depends="format" description="Modular build of format test suite">
+        <mkdir dir="${module.tests.dir}"/>
+        <javac destdir="${module.tests.dir}"
+                source="${javac.source}"
+                target="${javac.target}"
+                classpath="${module.bin.dir}"
+                debug="on" deprecation="off">
+            <src path="${icu4j.core.dir}/src"/>
+            <src path="${icu4j.test-framework.dir}/src"/>
+            <src path="${icu4j.core-tests.dir}/src"/>
+
+            <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>
+
+        <unjar src="${icu4j.testdata.jar}" dest="${module.tests.dir}">
+            <patternset>
+                <include name="**/format.res"/>
+            </patternset>
+        </unjar>
+
+        <copy file="${icu4j.core-tests.dir}/src/com/ibm/icu/dev/test/format/NumberFormatTestCases.txt"
+                todir="${module.tests.dir}/com/ibm/icu/dev/test/format"/>
+
+    </target>
+
+    <!-- Normalizer -->
+    <target name="normalizer" description="Modular build of normalizer services">
+        <mkdir dir="${module.bin.dir}"/>
+        <javac srcdir="${icu4j.core.dir}/src"
+                destdir="${module.bin.dir}"
+                source="${javac.source}"
+                target="${javac.target}"
+                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>
+
+        <unjar src="${icu4j.data.jar}" dest="${module.bin.dir}">
+            <patternset>
+                <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="normalizerTests" depends="normalizer" description="Modular build of normalizer test suite">
+        <mkdir dir="${module.tests.dir}"/>
+        <javac destdir="${module.tests.dir}"
+                source="${javac.source}"
+                target="${javac.target}"
+                classpath="${module.bin.dir}"
+                debug="on" deprecation="off">
+            <src path="${icu4j.core.dir}/src"/>
+            <src path="${icu4j.test-framework.dir}/src"/>
+            <src path="${icu4j.core-tests.dir}/src"/>
+
+            <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>
+
+        <copy todir="${module.tests.dir}">
+            <fileset dir="${icu4j.core-tests.dir}/src">
+                <include name="com/ibm/icu/dev/data/unicode/*.txt"/>
+                <exclude name="com/ibm/icu/dev/data/unicode/ucdterms.txt"/>
+            </fileset>
+        </copy>
+    </target>
+
+    <!-- Character Properties -->
+    <target name="_copyBasicPropsData">
+        <mkdir dir="${module.bin.dir}"/>
+        <unjar src="${icu4j.data.jar}" dest="${module.bin.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>
+    </target>
+
+    <target name="_copyFullPropsData">
+        <mkdir dir="${module.bin.dir}"/>
+        <unjar src="${icu4j.data.jar}" dest="${module.bin.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>
+    </target>
+
+    <target name="_propertiesClasses">
+        <mkdir dir="${module.bin.dir}"/>
+        <javac srcdir="${icu4j.core.dir}/src"
+                destdir="${module.bin.dir}"
+                source="${javac.source}"
+                target="${javac.target}"
+                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">
+        <mkdir dir="${module.tests.dir}"/>
+        <javac destdir="${module.tests.dir}"
+                source="${javac.source}"
+                target="${javac.target}"
+                classpath="${module.bin.dir}"
+                debug="on" deprecation="off">
+            <src path="${icu4j.core.dir}/src"/>
+            <src path="${icu4j.test-framework.dir}/src"/>
+            <src path="${icu4j.core-tests.dir}/src"/>
+
+            <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 todir="${module.tests.dir}">
+            <fileset dir="${icu4j.core-tests.dir}/src">
+                <include name="com/ibm/icu/dev/data/unicode/SpecialCasing.txt"/>
+                <include name="com/ibm/icu/dev/data/unicode/UnicodeData.txt"/>
+            </fileset>
+        </copy>
+    </target>
+
+    <target name="propertiesBasic" depends="_propertiesClasses, _copyBasicPropsData" description="Modular build of basic character properties"/>
+
+    <target name="propertiesBasicTests" depends="propertiesBasic, _propertiesTests" description="Modular build of basic character properties test suite"/>
+
+    <target name="propertiesFull" depends="_propertiesClasses, _copyFullPropsData" description="Modular build of full character properties"/>
+
+    <target name="propertiesFullTests" depends="propertiesFull, _propertiesTests" description="Modular build of full character properties test suite"/>
+
+    <!-- Transliterator -->
+    <!-- this module will soon be obsolete, use the translit jar -->
+    <target name="transliterator" depends="_propertiesClasses" description="Modular build of transliterator services">
+        <mkdir dir="${module.bin.dir}"/>
+        <javac  destdir="${module.bin.dir}"
+                source="${javac.source}"
+                target="${javac.target}"
+                debug="on" deprecation="off">
+            <src path="${icu4j.core.dir}/src"/>
+            <src path="${icu4j.translit.dir}/src"/>
+
+            <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"/>
+            <include name="com/ibm/icu/text/BreakIteratorFactory.java"/>
+        </javac>
+
+        <unjar src="${icu4j.data.jar}" dest="${module.bin.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>
+    </target>
+
+    <target name="transliteratorTests" depends="transliterator" description="Modular build of transliterator test suite">
+        <mkdir dir="${module.tests.dir}"/>
+        <javac destdir="${module.tests.dir}"
+                source="${javac.source}"
+                target="${javac.target}"
+                classpath="${module.bin.dir}"
+                debug="on" deprecation="off">
+            <src path="${icu4j.core.dir}/src"/>
+            <src path="${icu4j.test-framework.dir}/src"/>
+            <src path="${icu4j.translit-tests.dir}/src"/>
+
+            <patternset refid="common.test.sources"/>
+            <include name="com/ibm/icu/dev/test/TestAllTranslit.java"/>
+            <include name="com/ibm/icu/dev/test/translit/**/*.java"/>
+            <exclude name="com/ibm/icu/dev/test/translit/UnicodeFilterLogic*.java"/>
+        </javac>
+
+        <copy file="${icu4j.translit-tests.dir}/src/com/ibm/icu/dev/test/translit/langtagRegex.txt"
+                todir="${module.tests.dir}/com/ibm/icu/dev/test/translit"/>
+    </target>
+
+    <!-- StringPrep -->
+    <target name="stringPrep" depends="normalizer" description="Modular build of stringprep services">
+        <mkdir dir="${module.bin.dir}"/>
+        <javac srcdir="${icu4j.core.dir}/src"
+                destdir="${module.bin.dir}"
+                source="${javac.source}"
+                target="${javac.target}"
+                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>
+
+        <unjar src="${icu4j.data.jar}" dest="${module.bin.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="stringPrepTests" depends="stringPrep" description="Modular build of stringprep test suite">
+        <mkdir dir="${module.tests.dir}"/>
+        <javac destdir="${module.tests.dir}"
+                source="${javac.source}"
+                target="${javac.target}"
+                classpath="${module.bin.dir}"
+                debug="on" deprecation="off">
+            <src path="${icu4j.core.dir}/src"/>
+            <src path="${icu4j.test-framework.dir}/src"/>
+            <src path="${icu4j.core-tests.dir}/src"/>
+
+            <patternset refid="common.test.sources"/>
+            <include name="com/ibm/icu/dev/test/stringprep/**/*.java"/>
+        </javac>
+
+        <unjar src="${icu4j.testdata.jar}" dest="${module.tests.dir}">
+            <patternset>
+                <include name="**/*.spp"/>
+                <include name="**/idna_rules.res"/>
+            </patternset>
+        </unjar>
+
+        <copy file="${icu4j.core-tests.dir}/src/com/ibm/icu/dev/data/IDNATestInput.txt"
+                todir="${module.tests.dir}/com/ibm/icu/dev/data"/>
+    </target>
+
+</project>
diff --git a/demos/.classpath b/demos/.classpath
new file mode 100644
index 0000000..c13960c
--- /dev/null
+++ b/demos/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-charset"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-core"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-translit"/>
+	<classpathentry kind="output" path="out/bin"/>
+</classpath>
diff --git a/demos/.project b/demos/.project
new file mode 100644
index 0000000..69e0c1b
--- /dev/null
+++ b/demos/.project
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>icu4j-demos</name>
+	<comment></comment>
+	<projects>
+		<project>icu4j-charset</project>
+		<project>icu4j-core</project>
+		<project>icu4j-shared</project>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/demos/.settings/org.eclipse.jdt.core.prefs b/demos/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..1c6961a
--- /dev/null
+++ b/demos/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,330 @@
+#Fri Aug 28 16:05:27 EDT 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+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.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=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=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+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=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+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=ignore
+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.redundantSuperinterface=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.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+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.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
+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=120
+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_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not 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=120
+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/demos/.settings/org.eclipse.jdt.ui.prefs b/demos/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..abf9d87
--- /dev/null
+++ b/demos/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,6 @@
+#Tue Jun 09 16:57:19 EDT 2009
+eclipse.preferences.version=1
+formatter_profile=_ICU4J Standard
+formatter_settings_version=11
+org.eclipse.jdt.ui.javadoc=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/demos/build.properties b/demos/build.properties
new file mode 100644
index 0000000..f374881
--- /dev/null
+++ b/demos/build.properties
@@ -0,0 +1,5 @@
+#*******************************************************************************
+#* Copyright (C) 2009, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+shared.dir = ../main/shared
diff --git a/demos/build.xml b/demos/build.xml
new file mode 100644
index 0000000..3187e79
--- /dev/null
+++ b/demos/build.xml
@@ -0,0 +1,29 @@
+<!--
+*******************************************************************************
+* Copyright (C) 2009, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+-->
+<project name="demos" default="build" basedir=".">
+    <property file="build-local.properties"/>
+    <property file="build.properties"/>
+    <import file="${shared.dir}/build/common-targets.xml"/>
+
+    <path id="javac.classpathref">
+        <path refid="javac.classpathref.${ant.project.name}"/>
+    </path>
+    <property name="jar.file" value="${icu4j.demos.jar}"/>
+
+    <target name="build" depends="compile, copy, jar" description="Build the project"/>
+
+    <target name="build-all" depends="@build-all" description="Build the project including all dependencies"/>
+
+    <target name="clean" depends="@clean" description="Clean up the build outputs"/>
+
+    <target name="compile" depends="@compile" description="Compile java source files"/>
+
+    <target name="copy" depends="@copy" description="Copy non-java runtime files to the project's binary directory"/>
+
+    <target name="jar" depends="compile, copy, @jar" description="Create the project's jar file"/>
+
+</project>
\ No newline at end of file
diff --git a/demos/demos-build.launch b/demos/demos-build.launch
new file mode 100644
index 0000000..cead29e
--- /dev/null
+++ b/demos/demos-build.launch
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j-demos/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j-demos"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.pdebuild.templates" value="/D:/eclipse-SDK-3.4.2-win32/eclipse/plugins/org.eclipse.pde.build_3.4.1.R34x_v20081217/templates/"/>
+<mapEntry key="eclipse.pdebuild.home" value="/D:/eclipse-SDK-3.4.2-win32/eclipse/plugins/org.eclipse.pde.build_3.4.1.R34x_v20081217/./"/>
+<mapEntry key="eclipse.pdebuild.scripts" value="/D:/eclipse-SDK-3.4.2-win32/eclipse/plugins/org.eclipse.pde.build_3.4.1.R34x_v20081217/scripts/"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-demos/build.xml}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/demos/manifest.stub b/demos/manifest.stub
new file mode 100644
index 0000000..5180077
--- /dev/null
+++ b/demos/manifest.stub
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Main-Class: com.ibm.icu.dev.demo.Launcher
+Class-Path: icu4j.jar
+
+Name: com/ibm/icu/dev/demo
+Specification-Title: ICU for Java Demo
+Specification-Version: @SPECVERSION@
+Specification-Vendor: ICU
+Implementation-Title: ICU for Java Demo
+Implementation-Version: @IMPLVERSION@
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: @COPYRIGHT@
diff --git a/demos/src/com/ibm/icu/dev/demo/Launcher.java b/demos/src/com/ibm/icu/dev/demo/Launcher.java
new file mode 100644
index 0000000..2d88044
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/calendar/CalendarApp.java b/demos/src/com/ibm/icu/dev/demo/calendar/CalendarApp.java
new file mode 100644
index 0000000..5b7d76c
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/calendar/CalendarCalc.java b/demos/src/com/ibm/icu/dev/demo/calendar/CalendarCalc.java
new file mode 100644
index 0000000..ff9a75b
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/calendar/CalendarFrame.java b/demos/src/com/ibm/icu/dev/demo/calendar/CalendarFrame.java
new file mode 100644
index 0000000..fd76ec7
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/calendar/CalendarPanel.java b/demos/src/com/ibm/icu/dev/demo/calendar/CalendarPanel.java
new file mode 100644
index 0000000..8ea94d3
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/calendar/package.html b/demos/src/com/ibm/icu/dev/demo/calendar/package.html
new file mode 100644
index 0000000..c1bb105
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/charsetdet/DetectingViewer.java b/demos/src/com/ibm/icu/dev/demo/charsetdet/DetectingViewer.java
new file mode 100644
index 0000000..de4ef06
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/holiday/HolidayBorderPanel.java b/demos/src/com/ibm/icu/dev/demo/holiday/HolidayBorderPanel.java
new file mode 100644
index 0000000..af6ce9b
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/holiday/HolidayCalendarDemo.java b/demos/src/com/ibm/icu/dev/demo/holiday/HolidayCalendarDemo.java
new file mode 100644
index 0000000..5899b78
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/holiday/package.html b/demos/src/com/ibm/icu/dev/demo/holiday/package.html
new file mode 100644
index 0000000..d05e2f5
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/impl/AppletFrame.java b/demos/src/com/ibm/icu/dev/demo/impl/AppletFrame.java
new file mode 100644
index 0000000..1f6ad3d
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/impl/DemoApplet.java b/demos/src/com/ibm/icu/dev/demo/impl/DemoApplet.java
new file mode 100644
index 0000000..554cf9e
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/impl/DemoTextBox.java b/demos/src/com/ibm/icu/dev/demo/impl/DemoTextBox.java
new file mode 100644
index 0000000..bdd28ad
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/impl/DemoUtility.java b/demos/src/com/ibm/icu/dev/demo/impl/DemoUtility.java
new file mode 100644
index 0000000..5c5c3f4
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/impl/DumbTextComponent.java b/demos/src/com/ibm/icu/dev/demo/impl/DumbTextComponent.java
new file mode 100644
index 0000000..b854ff3
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/impl/Selection.java b/demos/src/com/ibm/icu/dev/demo/impl/Selection.java
new file mode 100644
index 0000000..7f80a4d
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/impl/package.html b/demos/src/com/ibm/icu/dev/demo/impl/package.html
new file mode 100644
index 0000000..a7e8d35
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/number/CurrencyDemo.java b/demos/src/com/ibm/icu/dev/demo/number/CurrencyDemo.java
new file mode 100644
index 0000000..4912a06
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/rbnf/RbnfDemo.java b/demos/src/com/ibm/icu/dev/demo/rbnf/RbnfDemo.java
new file mode 100644
index 0000000..1b67c06
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java b/demos/src/com/ibm/icu/dev/demo/rbnf/RbnfSampleRuleSets.java
new file mode 100644
index 0000000..c03ed71
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/rbnf/package.html b/demos/src/com/ibm/icu/dev/demo/rbnf/package.html
new file mode 100644
index 0000000..8a0507f
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/timescale/PivotDemo.java b/demos/src/com/ibm/icu/dev/demo/timescale/PivotDemo.java
new file mode 100644
index 0000000..72d8304
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/translit/AnyTransliterator.java b/demos/src/com/ibm/icu/dev/demo/translit/AnyTransliterator.java
new file mode 100644
index 0000000..0386dc6
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/translit/CaseIterator.java b/demos/src/com/ibm/icu/dev/demo/translit/CaseIterator.java
new file mode 100644
index 0000000..0e70659
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/translit/Demo.java b/demos/src/com/ibm/icu/dev/demo/translit/Demo.java
new file mode 100644
index 0000000..718065e
--- /dev/null
+++ b/demos/src/com/ibm/icu/dev/demo/translit/Demo.java
@@ -0,0 +1,1381 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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.impl.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/demos/src/com/ibm/icu/dev/demo/translit/DemoApplet.java b/demos/src/com/ibm/icu/dev/demo/translit/DemoApplet.java
new file mode 100644
index 0000000..8ee03ae
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/translit/InfoDialog.java b/demos/src/com/ibm/icu/dev/demo/translit/InfoDialog.java
new file mode 100644
index 0000000..08e5dc7
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/translit/Test_Arabic-Latin.txt b/demos/src/com/ibm/icu/dev/demo/translit/Test_Arabic-Latin.txt
new file mode 100644
index 0000000..146c659
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/translit/Test_Greek-Latin.txt b/demos/src/com/ibm/icu/dev/demo/translit/Test_Greek-Latin.txt
new file mode 100644
index 0000000..6380074
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/translit/Test_Han-Latin.txt b/demos/src/com/ibm/icu/dev/demo/translit/Test_Han-Latin.txt
new file mode 100644
index 0000000..8603663
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/translit/Test_Hebrew-Latin.txt b/demos/src/com/ibm/icu/dev/demo/translit/Test_Hebrew-Latin.txt
new file mode 100644
index 0000000..9d26745
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/translit/Test_Instructions.html b/demos/src/com/ibm/icu/dev/demo/translit/Test_Instructions.html
new file mode 100644
index 0000000..026394a
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/translit/Test_Thai-Latin.txt b/demos/src/com/ibm/icu/dev/demo/translit/Test_Thai-Latin.txt
new file mode 100644
index 0000000..631f191
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/translit/TransliteratingTextComponent.java b/demos/src/com/ibm/icu/dev/demo/translit/TransliteratingTextComponent.java
new file mode 100644
index 0000000..a1e6e07
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/translit/TransliterationChart.java b/demos/src/com/ibm/icu/dev/demo/translit/TransliterationChart.java
new file mode 100644
index 0000000..b487ea0
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/translit/demo.bat b/demos/src/com/ibm/icu/dev/demo/translit/demo.bat
new file mode 100755
index 0000000..dd9c205
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/translit/demo.html b/demos/src/com/ibm/icu/dev/demo/translit/demo.html
new file mode 100644
index 0000000..2a7ee5b
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/translit/package.html b/demos/src/com/ibm/icu/dev/demo/translit/package.html
new file mode 100644
index 0000000..8355d1f
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Han_Pinyin.txt b/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Han_Pinyin.txt
new file mode 100644
index 0000000..8f7c21d
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_English.txt b/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_English.txt
new file mode 100644
index 0000000..fe353f3
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_OnRomaji.txt b/demos/src/com/ibm/icu/dev/demo/translit/resources/Transliterator_Kanji_OnRomaji.txt
new file mode 100644
index 0000000..7435913
--- /dev/null
+++ b/demos/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/demos/src/com/ibm/icu/dev/demo/translit/thai_test.txt b/demos/src/com/ibm/icu/dev/demo/translit/thai_test.txt
new file mode 100644
index 0000000..ef5f90c
--- /dev/null
+++ b/demos/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/icu-eclipse/features/com.ibm.icu.base/.project b/icu-eclipse/features/com.ibm.icu.base/.project
new file mode 100644
index 0000000..7f1208b
--- /dev/null
+++ b/icu-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/icu-eclipse/features/com.ibm.icu.base/build.properties b/icu-eclipse/features/com.ibm.icu.base/build.properties
new file mode 100644
index 0000000..ea9d11f
--- /dev/null
+++ b/icu-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/icu-eclipse/features/com.ibm.icu.base/feature.xml b/icu-eclipse/features/com.ibm.icu.base/feature.xml
new file mode 100644
index 0000000..c6921c2
--- /dev/null
+++ b/icu-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/icu-eclipse/features/com.ibm.icu.jse4/.project b/icu-eclipse/features/com.ibm.icu.jse4/.project
new file mode 100644
index 0000000..82740eb
--- /dev/null
+++ b/icu-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/icu-eclipse/features/com.ibm.icu.jse4/build.properties b/icu-eclipse/features/com.ibm.icu.jse4/build.properties
new file mode 100644
index 0000000..6da5b4b
--- /dev/null
+++ b/icu-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/icu-eclipse/features/com.ibm.icu.jse4/feature.xml b/icu-eclipse/features/com.ibm.icu.jse4/feature.xml
new file mode 100644
index 0000000..9e8e716
--- /dev/null
+++ b/icu-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/icu-eclipse/features/com.ibm.icu/.project b/icu-eclipse/features/com.ibm.icu/.project
new file mode 100644
index 0000000..d407fa0
--- /dev/null
+++ b/icu-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/icu-eclipse/features/com.ibm.icu/build.properties b/icu-eclipse/features/com.ibm.icu/build.properties
new file mode 100644
index 0000000..e9000a4
--- /dev/null
+++ b/icu-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/icu-eclipse/features/com.ibm.icu/feature.xml b/icu-eclipse/features/com.ibm.icu/feature.xml
new file mode 100644
index 0000000..417e65b
--- /dev/null
+++ b/icu-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/icu-eclipse/misc/ICUConfig.properties b/icu-eclipse/misc/ICUConfig.properties
new file mode 100644
index 0000000..26dad40
--- /dev/null
+++ b/icu-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/icu-eclipse/misc/about_icu.html b/icu-eclipse/misc/about_icu.html
new file mode 100644
index 0000000..1f86231
--- /dev/null
+++ b/icu-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>May 8, 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.2</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>
+		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://www.icu-project.org">ICU public web site</a>.</p>
+
+</body>
+</html>
diff --git a/icu-eclipse/misc/about_icu_base.html b/icu-eclipse/misc/about_icu_base.html
new file mode 100644
index 0000000..844bf6c
--- /dev/null
+++ b/icu-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>May 8, 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.2</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://www.icu-project.org">ICU public web site</a>.</p>
+
+</body>
+</html>
diff --git a/icu-eclipse/pdebuild/allElements.xml b/icu-eclipse/pdebuild/allElements.xml
new file mode 100644
index 0000000..e4d6613
--- /dev/null
+++ b/icu-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/icu-eclipse/pdebuild/build.properties b/icu-eclipse/pdebuild/build.properties
new file mode 100644
index 0000000..50fc9cb
--- /dev/null
+++ b/icu-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/icu-eclipse/pdebuild/customTargets.xml b/icu-eclipse/pdebuild/customTargets.xml
new file mode 100644
index 0000000..ae4266d
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base.tests/.classpath b/icu-eclipse/plugins/com.ibm.icu.base.tests/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base.tests/.project b/icu-eclipse/plugins/com.ibm.icu.base.tests/.project
new file mode 100644
index 0000000..848567c
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.core.prefs b/icu-eclipse/plugins/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..40047e6
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.ui.prefs b/icu-eclipse/plugins/com.ibm.icu.base.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..34e9838
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base.tests/META-INF/MANIFEST.MF b/icu-eclipse/plugins/com.ibm.icu.base.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..935db05
--- /dev/null
+++ b/icu-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-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.3,
+ CDC-1.0/Foundation-1.0
+Require-Bundle: org.junit
diff --git a/icu-eclipse/plugins/com.ibm.icu.base.tests/build.properties b/icu-eclipse/plugins/com.ibm.icu.base.tests/build.properties
new file mode 100644
index 0000000..34d2e4d
--- /dev/null
+++ b/icu-eclipse/plugins/com.ibm.icu.base.tests/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/BreakIteratorTest.java b/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/BreakIteratorTest.java
new file mode 100644
index 0000000..0bbc8b1
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CalendarTest.java b/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CalendarTest.java
new file mode 100644
index 0000000..fddf539
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollationKeyTest.java b/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollationKeyTest.java
new file mode 100644
index 0000000..9638984
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollatorTest.java b/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/CollatorTest.java
new file mode 100644
index 0000000..7321d57
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatSymbolsTest.java b/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatSymbolsTest.java
new file mode 100644
index 0000000..b7ffad5
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatTest.java b/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DateFormatTest.java
new file mode 100644
index 0000000..4a4c040
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatSymbolsTest.java b/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatSymbolsTest.java
new file mode 100644
index 0000000..5e9c87a
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatTest.java b/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/DecimalFormatTest.java
new file mode 100644
index 0000000..a1a9f1e
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ICUTestCase.java b/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ICUTestCase.java
new file mode 100644
index 0000000..13f2003
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/MessageFormatTest.java b/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/MessageFormatTest.java
new file mode 100644
index 0000000..c839050
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/NumberFormatTest.java b/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/NumberFormatTest.java
new file mode 100644
index 0000000..100b52c
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/SimpleDateFormatTest.java b/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/SimpleDateFormatTest.java
new file mode 100644
index 0000000..6e09027
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/TimeZoneTest.java b/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/TimeZoneTest.java
new file mode 100644
index 0000000..547a208
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ULocaleTest.java b/icu-eclipse/plugins/com.ibm.icu.base.tests/src/com/ibm/icu/tests/ULocaleTest.java
new file mode 100644
index 0000000..8730d66
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base/.classpath b/icu-eclipse/plugins/com.ibm.icu.base/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base/.project b/icu-eclipse/plugins/com.ibm.icu.base/.project
new file mode 100644
index 0000000..24d73b3
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base/.settings/org.eclipse.jdt.core.prefs b/icu-eclipse/plugins/com.ibm.icu.base/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c87a86d
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base/.settings/org.eclipse.jdt.ui.prefs b/icu-eclipse/plugins/com.ibm.icu.base/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..96ae609
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base/META-INF/MANIFEST.MF b/icu-eclipse/plugins/com.ibm.icu.base/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2cc2322
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base/build.properties b/icu-eclipse/plugins/com.ibm.icu.base/build.properties
new file mode 100644
index 0000000..8c108f2
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base/plugin.properties b/icu-eclipse/plugins/com.ibm.icu.base/plugin.properties
new file mode 100644
index 0000000..b33400d
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/BreakIterator.java b/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/BreakIterator.java
new file mode 100644
index 0000000..c95e217
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/CollationKey.java b/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/CollationKey.java
new file mode 100644
index 0000000..fde7b4c
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/Collator.java b/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/Collator.java
new file mode 100644
index 0000000..38f680d
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DateFormat.java b/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DateFormat.java
new file mode 100644
index 0000000..dce51f1
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DateFormatSymbols.java b/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DateFormatSymbols.java
new file mode 100644
index 0000000..76319cd
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormat.java b/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormat.java
new file mode 100644
index 0000000..8a4494f
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormatSymbols.java b/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/DecimalFormatSymbols.java
new file mode 100644
index 0000000..0ccbe3b
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/MessageFormat.java b/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/MessageFormat.java
new file mode 100644
index 0000000..67e6300
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/NumberFormat.java b/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/NumberFormat.java
new file mode 100644
index 0000000..f825a94
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/SimpleDateFormat.java b/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/text/SimpleDateFormat.java
new file mode 100644
index 0000000..ddf0300
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/Calendar.java b/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/Calendar.java
new file mode 100644
index 0000000..18d4e02
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/TimeZone.java b/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/TimeZone.java
new file mode 100644
index 0000000..878afeb
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/ULocale.java b/icu-eclipse/plugins/com.ibm.icu.base/src/com/ibm/icu/util/ULocale.java
new file mode 100644
index 0000000..ea9a603
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.jse4/.classpath b/icu-eclipse/plugins/com.ibm.icu.jse4/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.jse4/.project b/icu-eclipse/plugins/com.ibm.icu.jse4/.project
new file mode 100644
index 0000000..4a1190f
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.jse4/.settings/org.eclipse.jdt.core.prefs b/icu-eclipse/plugins/com.ibm.icu.jse4/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3c5b959
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.jse4/.settings/org.eclipse.jdt.ui.prefs b/icu-eclipse/plugins/com.ibm.icu.jse4/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..fb60652
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.jse4/META-INF/MANIFEST.MF b/icu-eclipse/plugins/com.ibm.icu.jse4/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..4b08f74
--- /dev/null
+++ b/icu-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="[4.2.0,4.4.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/icu-eclipse/plugins/com.ibm.icu.jse4/build.properties b/icu-eclipse/plugins/com.ibm.icu.jse4/build.properties
new file mode 100644
index 0000000..a321eae
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.jse4/fragment-icu-jse4.properties b/icu-eclipse/plugins/com.ibm.icu.jse4/fragment-icu-jse4.properties
new file mode 100644
index 0000000..427917f
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.tests/.classpath b/icu-eclipse/plugins/com.ibm.icu.tests/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/icu-eclipse/plugins/com.ibm.icu.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/icu-eclipse/plugins/com.ibm.icu.tests/.project b/icu-eclipse/plugins/com.ibm.icu.tests/.project
new file mode 100644
index 0000000..b406f25
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.tests/.settings/org.eclipse.jdt.core.prefs b/icu-eclipse/plugins/com.ibm.icu.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..93763f6
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.tests/.settings/org.eclipse.jdt.ui.prefs b/icu-eclipse/plugins/com.ibm.icu.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..1c69cb6
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.tests/META-INF/MANIFEST.MF b/icu-eclipse/plugins/com.ibm.icu.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..7582e35
--- /dev/null
+++ b/icu-eclipse/plugins/com.ibm.icu.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+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-Copyright: @COPYRIGHT@
+Require-Bundle: org.junit
+Bundle-RequiredExecutionEnvironment: J2SE-1.3,
+ CDC-1.0/Foundation-1.0
diff --git a/icu-eclipse/plugins/com.ibm.icu.tests/build.properties b/icu-eclipse/plugins/com.ibm.icu.tests/build.properties
new file mode 100644
index 0000000..2d0d402
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu.tests/src/com/ibm/icu/tests/UnitTest.java b/icu-eclipse/plugins/com.ibm.icu.tests/src/com/ibm/icu/tests/UnitTest.java
new file mode 100644
index 0000000..cc2871a
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu/.classpath b/icu-eclipse/plugins/com.ibm.icu/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu/.project b/icu-eclipse/plugins/com.ibm.icu/.project
new file mode 100644
index 0000000..e73714f
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu/.settings/org.eclipse.jdt.core.prefs b/icu-eclipse/plugins/com.ibm.icu/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..6b3fe56
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu/.settings/org.eclipse.jdt.ui.prefs b/icu-eclipse/plugins/com.ibm.icu/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..5693f2f
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu/META-INF/MANIFEST.MF b/icu-eclipse/plugins/com.ibm.icu/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2f1e278
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu/build.properties b/icu-eclipse/plugins/com.ibm.icu/build.properties
new file mode 100644
index 0000000..8c108f2
--- /dev/null
+++ b/icu-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/icu-eclipse/plugins/com.ibm.icu/plugin.properties b/icu-eclipse/plugins/com.ibm.icu/plugin.properties
new file mode 100644
index 0000000..9fe7037
--- /dev/null
+++ b/icu-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/main/classes/charset/.classpath b/main/classes/charset/.classpath
new file mode 100644
index 0000000..3529965
--- /dev/null
+++ b/main/classes/charset/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry excluding="**/.svn/" kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-core"/>
+	<classpathentry kind="output" path="out/bin"/>
+</classpath>
diff --git a/main/classes/charset/.externalToolBuilders/copy-data-charset.launch b/main/classes/charset/.externalToolBuilders/copy-data-charset.launch
new file mode 100644
index 0000000..dd1c877
--- /dev/null
+++ b/main/classes/charset/.externalToolBuilders/copy-data-charset.launch
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_AFTER_CLEAN_TARGETS" value="copy-data,"/>
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_MANUAL_TARGETS" value="copy-data,"/>
+<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-charset/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-charset"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.running" value="true"/>
+<mapEntry key="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-charset/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"/>
+</launchConfiguration>
diff --git a/main/classes/charset/.project b/main/classes/charset/.project
new file mode 100644
index 0000000..a4fb3b8
--- /dev/null
+++ b/main/classes/charset/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>icu4j-charset</name>
+	<comment></comment>
+	<projects>
+		<project>icu4j-core</project>
+		<project>icu4j-shared</project>
+	</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/copy-data-charset.launch</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/main/classes/charset/.settings/org.eclipse.jdt.core.prefs b/main/classes/charset/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..ce15e6f
--- /dev/null
+++ b/main/classes/charset/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,343 @@
+#Thu Aug 27 17:46:17 EDT 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+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.doc.comment.support=enabled
+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.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+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=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+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.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+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=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=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=warning
+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.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+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.unusedParameterIncludeDocCommentReference=enabled
+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.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
+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=120
+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_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not 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=120
+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/main/classes/charset/.settings/org.eclipse.jdt.ui.prefs b/main/classes/charset/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..2f2671e
--- /dev/null
+++ b/main/classes/charset/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,10 @@
+#Wed Jun 17 11:09:55 EDT 2009
+eclipse.preferences.version=1
+formatter_profile=_ICU4J Standard
+formatter_settings_version=11
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+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/main/classes/charset/build.properties b/main/classes/charset/build.properties
new file mode 100644
index 0000000..a21fb19
--- /dev/null
+++ b/main/classes/charset/build.properties
@@ -0,0 +1,6 @@
+#*******************************************************************************
+#* Copyright (C) 2009, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+shared.dir = ../../shared
+javac.compilerarg = -Xlint:all,-deprecation,-dep-ann
diff --git a/main/classes/charset/build.xml b/main/classes/charset/build.xml
new file mode 100644
index 0000000..b9c0493
--- /dev/null
+++ b/main/classes/charset/build.xml
@@ -0,0 +1,38 @@
+<!--
+*******************************************************************************
+* Copyright (C) 2009, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+-->
+<project name="charset" default="build" basedir=".">
+    <property file="build-local.properties"/>
+    <property file="build.properties"/>
+    <import file="${shared.dir}/build/common-targets.xml"/>
+
+    <path id="javac.classpathref">
+        <path refid="javac.classpathref.${ant.project.name}"/>
+    </path>
+    <property name="jar.file" value="${icu4j.charset.jar}"/>
+
+    <target name="build" depends="compile, copy, jar" description="Build the project"/>
+
+    <target name="build-all" depends="@build-all" description="Build the project including all dependencies"/>
+
+    <target name="clean" depends="@clean" description="Clean up the build outputs"/>
+
+    <target name="compile" depends="@compile" description="Compile java source files"/>
+
+    <target name="copy" depends="@copy, copy-data" description="Copy non-java runtime files to the project's binary directory"/>
+
+    <target name="jar" depends="compile, copy, @jar" description="Create the project's jar file"/>
+
+    <target name="copy-data" description="Extract pre-built ICU core data files and copy them to the project's binary directory">
+        <unjar src="${icu4j.data.jar}" dest="${bin.dir}">
+            <patternset>
+                <include name="**/*.cnv"/>
+                <include name="**/cnvalias.icu"/>
+            </patternset>
+        </unjar>
+    </target>
+
+</project>
\ No newline at end of file
diff --git a/main/classes/charset/charset-build.launch b/main/classes/charset/charset-build.launch
new file mode 100644
index 0000000..5afd6a3
--- /dev/null
+++ b/main/classes/charset/charset-build.launch
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j-charset/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j-charset"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.running" value="true"/>
+<mapEntry key="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_TARGETS" value="build-all,"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-charset/build.xml}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/main/classes/charset/manifest.stub b/main/classes/charset/manifest.stub
new file mode 100644
index 0000000..a117a36
--- /dev/null
+++ b/main/classes/charset/manifest.stub
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+
+Name: com/ibm/icu/charset
+Specification-Title: ICU4J Charset
+Specification-Version: @SPECVERSION@
+Specification-Vendor: ICU
+Implementation-Title: ICU for Java Charset
+Implementation-Version: @IMPLVERSION@
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: @COPYRIGHT@
\ No newline at end of file
diff --git a/main/classes/charset/src/META-INF/services/java.nio.charset.spi.CharsetProvider b/main/classes/charset/src/META-INF/services/java.nio.charset.spi.CharsetProvider
new file mode 100644
index 0000000..ca798e7
--- /dev/null
+++ b/main/classes/charset/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/main/classes/charset/src/com/ibm/icu/charset/Charset88591.java b/main/classes/charset/src/com/ibm/icu/charset/Charset88591.java
new file mode 100644
index 0000000..a74a1f7
--- /dev/null
+++ b/main/classes/charset/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/main/classes/charset/src/com/ibm/icu/charset/CharsetASCII.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetASCII.java
new file mode 100644
index 0000000..419a460
--- /dev/null
+++ b/main/classes/charset/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/main/classes/charset/src/com/ibm/icu/charset/CharsetBOCU1.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetBOCU1.java
new file mode 100644
index 0000000..c830cd7
--- /dev/null
+++ b/main/classes/charset/src/com/ibm/icu/charset/CharsetBOCU1.java
@@ -0,0 +1,1064 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008-2009, 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;
+        }
+
+        @SuppressWarnings("fallthrough")
+        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;
+            }
+            
+            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())&UConverterConstants.UNSIGNED_BYTE_MASK) && 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(source.position()-2);
+                            bytes[1]= source.get(source.position()-1);
+                            byteIndex = 2;
+                            cr = CoderResult.malformedForLength(2);
+                            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(UTF16.getLeadSurrogate(c));
+                    if(target.hasRemaining()) {
+                        target.put(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/main/classes/charset/src/com/ibm/icu/charset/CharsetCESU8.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetCESU8.java
new file mode 100644
index 0000000..bf2c204
--- /dev/null
+++ b/main/classes/charset/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/main/classes/charset/src/com/ibm/icu/charset/CharsetCallback.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetCallback.java
new file mode 100644
index 0000000..0557ec3
--- /dev/null
+++ b/main/classes/charset/src/com/ibm/icu/charset/CharsetCallback.java
@@ -0,0 +1,402 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006-2009, 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.
+ *
+ * @stable ICU 3.6
+ */
+
+public class CharsetCallback {
+    /*
+     * FROM_U, TO_U context options for sub callback
+     */
+    private static final String SUB_STOP_ON_ILLEGAL = "i";
+
+//    /*
+//     * FROM_U, TO_U context options for skip callback
+//     */
+//    private static final String SKIP_STOP_ON_ILLEGAL = "i";
+
+//    /*
+//     * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to ICU (%UXXXX) 
+//     */
+//    private static final String ESCAPE_ICU  = null;
+
+    /*
+     * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to JAVA (\\uXXXX)
+     */
+    private 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)
+     */
+    private 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
+     */
+    private 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
+     */
+    private static final String ESCAPE_XML_HEX  = "X";
+
+    /*
+     * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to Unicode (U+XXXXX)
+     */
+    private static final String ESCAPE_UNICODE  = "U";
+
+    /*
+     * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to Unicode (U+XXXXX)
+     */
+    private static final String ESCAPE_CSS2  = "S";
+
+    /**
+     * Decoder Callback interface
+     * @stable ICU 3.6
+     */
+    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.
+         * @stable ICU 3.6
+         */
+        public CoderResult call(CharsetDecoderICU decoder, Object context, 
+                                ByteBuffer source, CharBuffer target, IntBuffer offsets,
+                                char[] buffer, int length, CoderResult cr);
+    }
+    /**
+     * Encoder Callback interface
+     * @stable ICU 3.6
+     */
+    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.
+         * @stable ICU 3.6
+         */
+        public CoderResult call(CharsetEncoderICU encoder, Object context, 
+                                CharBuffer source, ByteBuffer target, IntBuffer offsets, 
+                                char[] buffer, int length, int cp, CoderResult cr);
+    }    
+    /**
+     * Skip callback
+     * @stable ICU 3.6
+     */
+    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
+     * @stable ICU 3.6
+     */
+    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
+     * @stable ICU 3.6
+     */
+    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
+     * @stable ICU 3.6
+     */
+    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
+     * @stable ICU 3.6
+     */
+    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
+     * @stable ICU 3.6
+     */
+    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
+     * @stable ICU 4.0
+     */
+    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);
+                    }
+                }
+            }
+
+            cr = encoder.cbFromUWriteUChars(encoder, CharBuffer.wrap(valueString, 0, valueStringLength), target, offsets);
+            return cr;
+        }
+    };
+    /**
+     * Write escape callback
+     * @stable ICU 4.0
+     */
+    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 U */
+                    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)) {
+                    while (i < length) {
+                        uniValueString[valueStringLength++] = UNICODE_RS_CODEPOINT;         /* adding \ */
+                        uniValueString[valueStringLength++] = UNICODE_X_LOW_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;
+                    }
+                }
+            }
+            
+            cr = 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.
+     */
+    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 = 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/main/classes/charset/src/com/ibm/icu/charset/CharsetDecoderICU.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetDecoderICU.java
new file mode 100644
index 0000000..735b2c3
--- /dev/null
+++ b/main/classes/charset/src/com/ibm/icu/charset/CharsetDecoderICU.java
@@ -0,0 +1,721 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006-2009, 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 */
+    protected 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, (1/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
+     * @stable ICU 4.0
+     */
+    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);
+                        // reset position
+                        replayArray.position(0);
+
+                        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 = 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++] & UConverterConstants.UNSIGNED_BYTE_MASK);
+        }
+    }
+    /*
+     * 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/main/classes/charset/src/com/ibm/icu/charset/CharsetEncoderICU.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetEncoderICU.java
new file mode 100644
index 0000000..6a26f0a
--- /dev/null
+++ b/main/classes/charset/src/com/ibm/icu/charset/CharsetEncoderICU.java
@@ -0,0 +1,920 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2009, 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 encountered.
+     * 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
+     * @stable ICU 4.0
+     */
+    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 The object is an illegal argument for UContext.
+     * @stable ICU 4.0
+     */
+    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 = (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/main/classes/charset/src/com/ibm/icu/charset/CharsetHZ.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetHZ.java
new file mode 100644
index 0000000..4fc1108
--- /dev/null
+++ b/main/classes/charset/src/com/ibm/icu/charset/CharsetHZ.java
@@ -0,0 +1,385 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008-2009, 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) {
+            CoderResult err = CoderResult.UNDERFLOW;
+            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
+                             */
+                            /*
+                             * Ticket 5691: consistent illegal sequences:
+                             * - We include at least the first byte in the illegal sequence.
+                             * - If any of the non-initial bytes could be the start of a character,
+                             *   we stop the illegal sequence before the first one of those.
+                             */
+                            isEmptySegment = false; /* different error here, reset this to avoid spurious furture error */
+                            err = CoderResult.malformedForLength(1);
+                            toUBytesArray[0] = UCNV_TILDE;
+                            if (isStateDBCS ? (0x21 <= mySourceChar && mySourceChar <= 0x7e) : mySourceChar <= 0x7f) {
+                                /* The current byte could be the start of a character: Back it out. */
+                                toULength = 1;
+                                source.position(source.position() - 1);
+                            } else {
+                                /* Include the current byte in the illegal sequence. */
+                                toUBytesArray[1] = (byte)mySourceChar;
+                                toULength = 2;
+                            }
+                            return err;
+                        }
+                    } 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 */
+                            boolean leadIsOk, trailIsOk;
+                            int leadByte = toUnicodeStatus & 0xff;
+                            targetUniChar = 0xffff;
+                            /*
+                             * Ticket 5691: consistent illegal sequence
+                             * - We include at least the first byte in the illegal sequence.
+                             * - If any of the non-initial bytes could be the start of a character,
+                             *   we stop the illegal sequence before the first one of those
+                             * 
+                             * In HZ DBCS, if the second byte is in the 21..7e range,
+                             * we report ony the first byte as the illegal sequence.
+                             * Otherwise we convert of report the pair of bytes.
+                             */
+                            leadIsOk = (short)(UConverterConstants.UNSIGNED_BYTE_MASK & (leadByte - 0x21)) <= (0x7d - 0x21);
+                            trailIsOk = (short)(UConverterConstants.UNSIGNED_BYTE_MASK & (mySourceChar - 0x21)) <= (0x7e - 0x21);
+                            if (leadIsOk && trailIsOk) {
+                                tempBuf[0] = (byte)(leadByte + 0x80);
+                                tempBuf[1] = (byte)(mySourceChar + 0x80);
+                                targetUniChar = gbDecoder.simpleGetNextUChar(ByteBuffer.wrap(tempBuf), super.isFallbackUsed());
+                                mySourceChar = (leadByte << 8) | mySourceChar;
+                            } else if (trailIsOk) {
+                                /* report a single illegal byte and continue with the following DBCS starter byte */
+                                source.position(source.position() - 1);
+                                mySourceChar = leadByte;
+                            } else {
+                                /* report a pair of illegal bytes if the second byte is not a DBCS starter */
+                                /* add another bit so that the code below writes 2 bytes in case of error */
+                                mySourceChar = 0x10000 | (leadByte << 8) | mySourceChar;
+                            }
+                            toUnicodeStatus = 0x00;
+                        }
+                    } 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 err;
+        }
+    }
+
+    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/main/classes/charset/src/com/ibm/icu/charset/CharsetICU.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetICU.java
new file mode 100644
index 0000000..f88eb68
--- /dev/null
+++ b/main/classes/charset/src/com/ibm/icu/charset/CharsetICU.java
@@ -0,0 +1,378 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006-2009, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+*******************************************************************************
+*/ 
+
+package com.ibm.icu.charset;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.nio.charset.Charset;
+import java.nio.charset.IllegalCharsetNameException;
+import java.nio.charset.UnsupportedCharsetException;
+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. 
+      * @stable ICU 4.0
+      */
+      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<String, String> algorithmicCharsets = new HashMap<String, String>();
+    static{
+        algorithmicCharsets.put("LMBCS-1",               "com.ibm.icu.charset.CharsetLMBCS");
+        algorithmicCharsets.put("LMBCS-2",               "com.ibm.icu.charset.CharsetLMBCS");
+        algorithmicCharsets.put("LMBCS-3",               "com.ibm.icu.charset.CharsetLMBCS");
+        algorithmicCharsets.put("LMBCS-4",               "com.ibm.icu.charset.CharsetLMBCS");
+        algorithmicCharsets.put("LMBCS-5",               "com.ibm.icu.charset.CharsetLMBCS");
+        algorithmicCharsets.put("LMBCS-6",               "com.ibm.icu.charset.CharsetLMBCS");
+        algorithmicCharsets.put("LMBCS-8",               "com.ibm.icu.charset.CharsetLMBCS");
+        algorithmicCharsets.put("LMBCS-11",              "com.ibm.icu.charset.CharsetLMBCS");
+        algorithmicCharsets.put("LMBCS-16",              "com.ibm.icu.charset.CharsetLMBCS");
+        algorithmicCharsets.put("LMBCS-17",              "com.ibm.icu.charset.CharsetLMBCS");
+        algorithmicCharsets.put("LMBCS-18",              "com.ibm.icu.charset.CharsetLMBCS");
+        algorithmicCharsets.put("LMBCS-19",              "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 = 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<? extends CharsetICU> cs = Class.forName(className).asSubclass(CharsetICU.class);
+           Class<?>[] paramTypes = new Class<?>[]{ String.class, String.class,  String[].class};
+           final Constructor<? extends CharsetICU> c = cs.getConstructor(paramTypes);
+           Object[] params = new Object[]{ icuCanonicalName, javaCanonicalName, aliases};
+           
+           // Run constructor
+           try {
+               conv = c.newInstance(params);
+               if (conv != null) {
+                   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.              
+    * @stable ICU 4.0
+    */
+       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/main/classes/charset/src/com/ibm/icu/charset/CharsetISCII.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetISCII.java
new file mode 100644
index 0000000..d9c82d5
--- /dev/null
+++ b/main/classes/charset/src/com/ibm/icu/charset/CharsetISCII.java
@@ -0,0 +1,1458 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008-2009, 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;
+    }
+    @SuppressWarnings("unused")
+    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=";
+    
+    @SuppressWarnings("unused")
+    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 = lookupInitialData[option & UCNV_OPTIONS_VERSION_MASK].maskEnum; /* currentMaskToUnicode */
+            this.currentMaskFromUnicode = lookupInitialData[option & UCNV_OPTIONS_VERSION_MASK].maskEnum; /* currentMaskFromUnicode */
+            this.defMaskToUnicode = 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();
+        }
+
+        @SuppressWarnings("fallthrough")
+        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)(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/main/classes/charset/src/com/ibm/icu/charset/CharsetISO2022.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetISO2022.java
new file mode 100644
index 0000000..28db507
--- /dev/null
+++ b/main/classes/charset/src/com/ibm/icu/charset/CharsetISO2022.java
@@ -0,0 +1,2992 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008-2009, 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) && (((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 */
+        }
+    }
+    
+    /*
+     * Commented out because Ticket 5691: Call sites now check for validity. They can just += 0x8080 after that. 
+     * 
+     * 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 = 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;
+    
+    @SuppressWarnings("unused")
+    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 */
+    @SuppressWarnings("fallthrough")
+    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};
+        int initialToULength = decoder.toULength;
+        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) {
+            err = 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;
+        } else if (err.isMalformed()) {
+            if (decoder.toULength > 1) {
+                /*
+                 * Ticket 5691: consistent illegal sequences:
+                 * - We include at least the first byte (ESC) in the illegal sequence.
+                 * - If any of the non-initial bytes could be the start of a character,
+                 *   we stop the illegal sequece before the first one of those.
+                 *   In escape sequences, all following bytes are "printable", that is,
+                 *   unless they are completely illegal (>7f in SBCS, outside 21..7e in DBCS),
+                 *   they are valid single/lead bytes.
+                 *   For simplicity, we always only report the initial ESC byte as the
+                 *   illegal sequence and back out all other bytes we looked at.
+                 */
+                /* Back out some bytes. */
+                int backOutDistance = decoder.toULength - 1;
+                int bytesFromThisBuffer = decoder.toULength - initialToULength;
+                if (backOutDistance <= bytesFromThisBuffer) {
+                    /* same as initialToULength<=1 */
+                    source.position(source.position() - backOutDistance);
+                } else {
+                    /* Back out bytes from the previous buffer: Need to replay them. */
+                    decoder.preToULength = (byte)(bytesFromThisBuffer - backOutDistance);
+                    /* same as -(initalToULength-1) */
+                    /* preToULength is negative! */
+                    for (int i = 0; i < -(decoder.preToULength); i++) {
+                        decoder.preToUArray[i] = decoder.toUBytesArray[i+1];
+                    }
+                    source.position(source.position() - bytesFromThisBuffer);
+                }
+                decoder.toULength = 1;
+            }
+        }
+        
+        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);
+        }
+
+        @SuppressWarnings("fallthrough")
+        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] & UConverterConstants.UNSIGNED_BYTE_MASK);
+                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 = source.get() & UConverterConstants.UNSIGNED_BYTE_MASK;
+                        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;
+                                    short trailByte;
+                                    boolean leadIsOk, trailIsOk;
+                                    
+                                    trailByte = (short)(source.get(source.position()) & UConverterConstants.UNSIGNED_BYTE_MASK);
+                                    /*
+                                     * Ticket 5691: consistent illegal sequences:
+                                     * - We include at least the first byte in the illegal sequence.
+                                     * - If any of the non-initial bytes could be the start of a character,
+                                     *   we stop the illegal sequence before the first one of those.
+                                     * 
+                                     * In ISO-2022 DBCS, if the second byte is in the 21..7e range or is
+                                     * an ESC/SO/SI, we report only the first byte as the illegal sequence.
+                                     * Otherwise we convert or report the pair of bytes.
+                                     */
+                                    leadIsOk = (short)(UConverterConstants.UNSIGNED_BYTE_MASK & (mySourceChar - 0x21)) <= (0x7e - 0x21);
+                                    trailIsOk = (short)(UConverterConstants.UNSIGNED_BYTE_MASK & (trailByte - 0x21)) <= (0x7e - 0x21);
+                                    if (leadIsOk && trailIsOk) {
+                                        source.get();
+                                        tmpSourceChar = (mySourceChar << 8) | trailByte;
+                                        if (cs == JISX208) {
+                                            _2022ToSJIS((char)mySourceChar, (char)trailByte, tempBuf);
+                                            mySourceChar = tmpSourceChar;
+                                        } else {
+                                            /* Copy before we modify tmpSourceChar so toUnicodeCallback() sees the correct bytes. */
+                                            mySourceChar = tmpSourceChar;
+                                            if (cs == KSC5601) {
+                                                tmpSourceChar += 0x8080; /* = _2022ToGR94DBCS(tmpSourceChar) */
+                                            }
+                                            tempBuf[0] = (byte)(UConverterConstants.UNSIGNED_BYTE_MASK & (tmpSourceChar >> 8));
+                                            tempBuf[1] = (byte)(UConverterConstants.UNSIGNED_BYTE_MASK & tmpSourceChar);
+                                        }
+                                        targetUniChar = MBCSSimpleGetNextUChar(myConverterData.myConverterArray[cs], ByteBuffer.wrap(tempBuf), false);
+                                    } else if (!(trailIsOk || IS_2022_CONTROL(trailByte))) {
+                                        /* report a pair of illegal bytes if the second byte is not a DBCS starter */
+                                        source.get();
+                                        /* add another bit so that the code below writes 2 bytes in case of error */
+                                        mySourceChar = 0x10000 | (mySourceChar << 8) | trailByte;
+                                    }
+                                } 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();
+        }
+
+        @SuppressWarnings("fallthrough")
+        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] & UConverterConstants.UNSIGNED_BYTE_MASK);
+                toULength = 0;
+                targetUniChar = UConverterConstants.missingCharMarker;
+                // 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;
+                                boolean leadIsOk, trailIsOk;
+                                short trailByte;
+// getTrailByte: label
+                                gotoGetTrailByte = false; // reset gotoGetTrailByte
+                                
+                                trailByte = (short)(source.get(source.position()) & UConverterConstants.UNSIGNED_BYTE_MASK);
+                                /*
+                                 * Ticket 5691: consistent illegal sequences:
+                                 * - We include at least the first byte in the illegal sequence.
+                                 * - If any of the non-initial bytes could be the start of a character,
+                                 *   we stop the illegal sequence before the first one of those.
+                                 * 
+                                 * In ISO-2022 DBCS, if the second byte is in the range 21..7e range or is
+                                 * an ESC/SO/SI, we report only the first byte as the illegal sequence.
+                                 * Otherwise we convert or report the pair of bytes.
+                                 */
+                                leadIsOk = (short)(UConverterConstants.UNSIGNED_BYTE_MASK & (mySourceChar - 0x21)) <= (0x7e - 0x21);
+                                trailIsOk = (short)(UConverterConstants.UNSIGNED_BYTE_MASK & (trailByte - 0x21)) <= (0x7e - 0x21);
+                                if (leadIsOk && trailIsOk) {
+                                    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] = (byte)trailByte;
+                                        tempBufLen = 3;
+                                    } else {
+                                        cnv = myConverterData.myConverterArray[tempState];
+                                        tempBuf[0] = (byte)mySourceChar;
+                                        tempBuf[1] = (byte)trailByte;
+                                        tempBufLen = 2;
+                                    }
+                                    ByteBuffer tempBuffer = ByteBuffer.wrap(tempBuf);
+                                    tempBuffer.limit(tempBufLen);
+                                    targetUniChar = MBCSSimpleGetNextUChar(cnv, tempBuffer, false);
+                                    mySourceChar = (mySourceChar << 8) | trailByte;
+                                    
+                                } else if (!(trailIsOk || IS_2022_CONTROL(trailByte))) {
+                                    /* report a pair of illegal bytes if the second byte is not a DBCS starter */
+                                    source.get();
+                                    /* add another bit so that the code below writes 2 bytes in case of error */
+                                    mySourceChar = 0x10000 | (mySourceChar << 8) | trailByte;
+                                }
+                                if (myConverterData.toU2022State.g >= 2) {
+                                    /* return from a single-shift state to the previous one */
+                                    myConverterData.toU2022State.g = myConverterData.toU2022State.prevG;
+                                }
+                            } else {
+                                toUBytesArray[0] = (byte)mySourceChar;
+                                toULength = 1;
+                                // goto endloop;
+                                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] = source.position() - (mySourceChar <= 0xff ? 1 : 2);
+                        }
+                        if (target.hasRemaining()) {
+                            target.put((char)(0xdc00+(char)(targetUniChar&0x3ff)));
+                            if (offsets != null) {
+                                offsets.array()[target.position()-1] = 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;
+            int 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 = (toUBytesArray[0] & UConverterConstants.UNSIGNED_BYTE_MASK);
+                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) {
+                            boolean leadIsOk, trailIsOk;
+                            short trailByte;
+// getTrailByte label
+                            gotoGetTrailByte = false; // reset gotoGetTrailByte flag
+                            
+                            trailByte = (short)(source.get(source.position()) & UConverterConstants.UNSIGNED_BYTE_MASK);
+                            targetUniChar = UConverterConstants.missingCharMarker;
+                            /*
+                             * Ticket 5691: consistent illegal sequences:
+                             * - We include at least the first byte in the illegal sequence.
+                             * - If any of the non-initial bytes could be the start of a character,
+                             *   we stop the illegal sequence before the first one of those.
+                             * 
+                             * In ISO-2022 DBCS, if the second byte is in the 21..7e range or is
+                             * an ESC/SO/SI, we report only the first byte as the illegal sequence.
+                             * Otherwise we convert or report the pair of bytes.
+                             */
+                            leadIsOk = (short)(UConverterConstants.UNSIGNED_BYTE_MASK & (mySourceChar - 0x21)) <= (0x7e - 0x21);
+                            trailIsOk = (short)(UConverterConstants.UNSIGNED_BYTE_MASK & (trailByte - 0x21)) <= (0x7e - 0x21);
+                            if (leadIsOk && trailIsOk) {
+                                source.get();
+                                tempBuf[0] = (byte)(mySourceChar + 0x80);
+                                tempBuf[1] = (byte)(trailByte + 0x80);
+                                targetUniChar = MBCSSimpleGetNextUChar(myConverterData.currentConverter.sharedData, ByteBuffer.wrap(tempBuf), usingFallback);
+                                mySourceChar = (char)((mySourceChar << 8) | trailByte);
+                            } else if (!(trailIsOk || IS_2022_CONTROL(trailByte))) {
+                                /* report a pair of illegal bytes if the second byte is not a DBCS starter */
+                                source.get();
+                                /* add another bit so that the code below writes 2 bytes in case of error */
+                                mySourceChar = (char)(0x10000 | (mySourceChar << 8) | trailByte);
+                            }
+                        } else {
+                            toUBytesArray[0] = (byte)mySourceChar;
+                            toULength = 1;
+                            break;
+                        }
+                    } else if (mySourceChar <= 0x7f) {
+                        int savedSourceLimit = source.limit();
+                        int savedSourcePosition = source.position();
+                        source.limit(source.position());
+                        source.position(source.position()-1); 
+                        targetUniChar = MBCSSimpleGetNextUChar(myConverterData.currentConverter.sharedData, source, usingFallback);
+                        source.limit(savedSourceLimit);
+                        source.position(savedSourcePosition);
+                    } else {
+                        targetUniChar = 0xffff;
+                    }
+                    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 = 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 = cnv.toUBytesArray.clone();
+                        }
+                        toULength = cnv.toULength;
+                        
+                        if (err.isOverflow()) {
+                            if (cnv.charErrorBufferLength > 0) {
+                                charErrorBufferArray = cnv.charErrorBufferArray.clone();
+                            }
+                            charErrorBufferLength = cnv.charErrorBufferLength;
+                            cnv.charErrorBufferLength = 0;
+                        }
+                    }
+                    
+                    if (err.isError() || err.isOverflow() || (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 = 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 = 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 ||
+                                (length == 1 && targetByteUnit[0] > 0x7f) ||
+                                (length ==2 &&
+                                        ((char)(targetByteUnit[0] - 0xa1a1) > (0xfefe - 0xa1a1) ||
+                                        ((targetByteUnit[0] - 0xa1) & UConverterConstants.UNSIGNED_BYTE_MASK) > (0xfe - 0xa1)))) {
+                            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/main/classes/charset/src/com/ibm/icu/charset/CharsetLMBCS.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetLMBCS.java
new file mode 100644
index 0000000..ece67ed
--- /dev/null
+++ b/main/classes/charset/src/com/ibm/icu/charset/CharsetLMBCS.java
@@ -0,0 +1,1024 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008-2009, 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).
+         */
+        @SuppressWarnings("fallthrough")
+        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/main/classes/charset/src/com/ibm/icu/charset/CharsetMBCS.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetMBCS.java
new file mode 100644
index 0000000..7267247
--- /dev/null
+++ b/main/classes/charset/src/com/ibm/icu/charset/CharsetMBCS.java
@@ -0,0 +1,5026 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2006-2009, 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;
+
+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=(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 = 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 = 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 (entry&0x80ffffff)|(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 0x80000000 | (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) {
+        /* Just call cnvMBCSToUnicodeWithOffsets() to remove duplicate code. */
+            return cnvMBCSToUnicodeWithOffsets(source, target, offsets, flush);
+        }
+
+        /*
+         * 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 matchFromU() 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 */
+            byte[] sourceArray;
+            int sourcePosition, sourceLimit;
+            if (source.isReadOnly()) {
+                // source.array() would throw an exception
+                sourcePosition = source.position();  // relative to source.array()
+                sourceArray = new byte[Math.min(source.remaining(), EXT_MAX_BYTES)];
+                source.get(sourceArray).position(sourcePosition);
+                sourcePosition = 0;  // relative to sourceArray
+                sourceLimit = sourceArray.length;
+            } else {
+                sourceArray = source.array();
+                sourcePosition = source.position();
+                sourceLimit = source.limit();
+            }
+            match = matchToU((byte) -1, sourceArray, sourcePosition, sourceLimit, null, value, useFallback, true);
+
+            if (match == source.remaining()) {
+                /* 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 sourceArrayIndex, sourceArrayIndexStart;
+            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 = sourceArrayIndexStart = 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 = 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(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 = 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(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(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) */
+                    if (byteIndex > 1) {
+                        /*
+                         * Ticket 5691: consistent illegal sequences:
+                         * - We include at least the first byte in the illegal sequence.
+                         * - If any of the non-initial bytes could be the start of a character,
+                         *   we stop the illegal sequence before the first one of those.
+                         */
+                        boolean isDBCSOnly = (sharedData.mbcs.dbcsOnlyState != 0);
+                        byte i;
+                        for (i = 1; i < byteIndex && !isSingleOrLead(stateTable, state, isDBCSOnly, (short)(bytes[i] & UConverterConstants.UNSIGNED_BYTE_MASK)); i++) {}
+                        if (i < byteIndex) {
+                            byte backOutDistance = (byte)(byteIndex - i);
+                            int bytesFromThisBuffer = sourceArrayIndex - sourceArrayIndexStart;
+                            byteIndex = i; /* length of reported illegal byte sequence */
+                            if (backOutDistance <= bytesFromThisBuffer) {
+                                sourceArrayIndex -= backOutDistance;
+                            } else {
+                                /* Back out bytes from the previous buffer: Need to replay them. */
+                                this.preToULength = (byte)(bytesFromThisBuffer - backOutDistance);
+                                /* preToULength is negative! */
+                                for (int n = 0; n < -this.preToULength; n++) {
+                                    this.preToUArray[n] = bytes[i+n];
+                                }
+                                sourceArrayIndex = sourceArrayIndexStart;
+                            }
+                        }
+                    }
+                    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 += (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];
+        }
+        /*
+         * 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 && sourceArrayIndex < source.limit()) {
+                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(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(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 + (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(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(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 + (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(i++) & UConverterConstants.UNSIGNED_BYTE_MASK];
+
+                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() > i + length) {
+                        source.limit(i + length);
+                    }
+                    return simpleMatchToU(source, useFallback);
+                }
+            }
+
+            return c;
+        }
+        private boolean hasValidTrailBytes(int[][] stateTable, short state) {
+            int[] row = stateTable[state];
+            int b, entry;
+            /* First test for final entries in this state for some commonly valid byte values. */
+            entry = row[0xa1];
+            if (!MBCS_ENTRY_IS_TRANSITION(entry) && MBCS_ENTRY_FINAL_ACTION(entry) != MBCS_STATE_ILLEGAL) {
+                return true;
+            }
+            entry = row[0x41];
+            if (!MBCS_ENTRY_IS_TRANSITION(entry) && MBCS_ENTRY_FINAL_ACTION(entry) != MBCS_STATE_ILLEGAL) {
+                return true;
+            }
+            /* Then test for final entries in this state. */
+            for (b = 0; b <= 0xff; b++) {
+                entry = row[b];
+                if (!MBCS_ENTRY_IS_TRANSITION(entry) && MBCS_ENTRY_FINAL_ACTION(entry) != MBCS_STATE_ILLEGAL) {
+                    return true;
+                }
+            }
+            /* Then recurse for transition entries. */
+            for (b = 0; b <= 0xff; b++) {
+                entry = row[b];
+                if (MBCS_ENTRY_IS_TRANSITION(entry) && 
+                        hasValidTrailBytes(stateTable, (short)(MBCS_ENTRY_TRANSITION_STATE(entry) & UConverterConstants.UNSIGNED_BYTE_MASK))) {
+                    return true;
+                }
+            }
+            return false;
+        }
+        
+        private boolean isSingleOrLead(int[][] stateTable, int state, boolean isDBCSOnly, int b) {
+            int[] row = stateTable[state];
+            int entry = row[b];
+            if (MBCS_ENTRY_IS_TRANSITION(entry)) { /* lead byte */
+                return hasValidTrailBytes(stateTable, (short)(MBCS_ENTRY_TRANSITION_STATE(entry) & UConverterConstants.UNSIGNED_BYTE_MASK));
+            } else {
+                short action = (short)(MBCS_ENTRY_FINAL_ACTION(entry) & UConverterConstants.UNSIGNED_BYTE_MASK);
+                if (action == MBCS_STATE_CHANGE_ONLY && isDBCSOnly) {
+                    return false;   /* SI/SO are illegal for DBCS-only conversion */
+                } else {
+                    return (action != MBCS_STATE_ILLEGAL);
+                }
+            }
+        }
+        
+
+    }
+
+    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;
+        }
+
+        @SuppressWarnings("fallthrough")
+        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 = 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;
+        }
+
+        @SuppressWarnings("fallthrough")
+        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 = 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) {
+            // Just call encodeLoop to remove duplicate code.
+            return encodeLoop(source, target, offsets, flush);
+        }
+
+        /*
+         * 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 = 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);
+    }
+
+    @SuppressWarnings("fallthrough")
+    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*(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 = (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(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,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/main/classes/charset/src/com/ibm/icu/charset/CharsetProviderICU.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetProviderICU.java
new file mode 100644
index 0000000..bf02253
--- /dev/null
+++ b/main/classes/charset/src/com/ibm/icu/charset/CharsetProviderICU.java
@@ -0,0 +1,332 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006-2009, 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 = 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<Charset, String> 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<Charset> charsets(){
+        HashMap<Charset, String> map = new HashMap<Charset, String>();
+        putCharsets(map);
+        return map.keySet().iterator();
+    }
+    
+    /**
+     * Gets the canonical names of available converters 
+     * @return array of available converter names
+     * @internal ICU 3.6
+     * @deprecated This API is ICU internal only.
+     */
+     public static final String[] getAvailableNames(){
+        HashMap<Charset, String> map = new HashMap<Charset, String>();
+        putCharsets(map);
+        return map.values().toArray(new String[0]);
+    }
+     
+    /**
+     * Return all names available
+     * @return String[] an array 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/main/classes/charset/src/com/ibm/icu/charset/CharsetSCSU.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetSCSU.java
new file mode 100644
index 0000000..0807083
--- /dev/null
+++ b/main/classes/charset/src/com/ibm/icu/charset/CharsetSCSU.java
@@ -0,0 +1,1268 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008-2009, 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=0xF9;
+    //};
+    
+    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;
+  //  };
+    
+    @SuppressWarnings("unused")
+    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){
+            /* Note being used right now because "SCSU,locale=ja" does not work in ICU4J. */
+            /*    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 };
+    /* Note being used right now because "SCSU,locale=ja" does not work in ICU4J. */
+    // static final byte initialWindowUse_ja[]={ 3, 2, 4, 1, 0, 7, 5, 6 };
+
+    //enum {
+    //private static final int lGeneric = 0;
+    /* Note being used right now because "SCSU,locale=ja" does not work in ICU4J. */
+    // 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;
+                                    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(((b - gapThreshold)&UConverterConstants.UNSIGNED_BYTE_MASK)<(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 = (short)(source.get() & UConverterConstants.UNSIGNED_BYTE_MASK);
+                    ++nextSourceIndex;
+                    switch(state){
+                    case readCommand:
+                        if((short)((b -UC0)&UConverterConstants.UNSIGNED_BYTE_MASK)>(Urs - UC0)){
+                            byteOne = b;
+                            toUBytesArray[0] = (byte)b;
+                            toULength = 1;
+                            state = quotePairTwo;
+                        }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 (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 (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 ((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 = ((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 = ((SDX<<24) | (dynamicWindow<<21)|
+                                 (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 = (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 = ((SC0+window)<<8) | (c- currentOffset) | 0x80;
+                                length = 2;
+                                label = OutputBytes;
+                                return label;
+                            } else {
+                                /*quote from dynamic window*/
+                                c = ((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 = ((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 = ((SD0+dynamicWindow)<<16) | (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 |=((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 = ((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 = ((UD0+dynamicWindow)<<16) | (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 if (!AfterGetTrailUnicode){
+                        /*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(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;
+        }
+
+        @SuppressWarnings("fallthrough")
+        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){
+                switch(length){
+                /*each branch falls through 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/main/classes/charset/src/com/ibm/icu/charset/CharsetSelector.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetSelector.java
new file mode 100644
index 0000000..f2ce7e3
--- /dev/null
+++ b/main/classes/charset/src/com/ibm/icu/charset/CharsetSelector.java
@@ -0,0 +1,218 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and   *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+ */
+
+/* 
+ * This is a port of the C++ class UConverterSelector. 
+ *
+ * Methods related to serialization are not ported in this version. In addition,
+ * the selectForUTF8 method is not going to be ported, as UTF8 is seldom used
+ * in Java.
+ * 
+ * @author Shaopeng Jia
+ */
+
+package com.ibm.icu.charset;
+
+import java.nio.charset.Charset;
+import java.nio.charset.IllegalCharsetNameException;
+import java.nio.charset.UnsupportedCharsetException;
+import java.util.List;
+import java.util.Vector;
+
+import com.ibm.icu.impl.IntTrie;
+import com.ibm.icu.impl.PropsVectors;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * Charset Selector
+ * 
+ * A charset selector is built with a list of charset names and given an input
+ * CharSequence returns the list of names the corresponding charsets which can
+ * convert the CharSequence.
+ * 
+ * @draft ICU 4.2
+ * @provisional This API might change or be removed in a future release.
+ */
+public final class CharsetSelector {
+    private IntTrie trie;
+    private int[] pv; // table of bits
+    private String[] encodings; // encodings users ask to use
+
+    private void generateSelectorData(PropsVectors pvec,
+            UnicodeSet excludedCodePoints, int mappingTypes) {
+        int columns = (encodings.length + 31) / 32;
+
+        // set errorValue to all-ones
+        for (int col = 0; col < columns; ++col) {
+            pvec.setValue(PropsVectors.ERROR_VALUE_CP,
+                    PropsVectors.ERROR_VALUE_CP, col, ~0, ~0);
+        }
+
+        for (int i = 0; i < encodings.length; ++i) {
+            Charset testCharset = CharsetICU.forNameICU(encodings[i]);
+            UnicodeSet unicodePointSet = new UnicodeSet(); // empty set
+            ((CharsetICU) testCharset).getUnicodeSet(unicodePointSet,
+                    mappingTypes);
+            int column = i / 32;
+            int mask = 1 << (i % 32);
+            // now iterate over intervals on set i
+            int itemCount = unicodePointSet.getRangeCount();
+            for (int j = 0; j < itemCount; ++j) {
+                int startChar = unicodePointSet.getRangeStart(j);
+                int endChar = unicodePointSet.getRangeEnd(j);
+                pvec.setValue(startChar, endChar, column, ~0, mask);
+            }
+        }
+
+        // handle excluded encodings
+        // Simply set their values to all 1's in the pvec
+        if (!excludedCodePoints.isEmpty()) {
+            int itemCount = excludedCodePoints.getRangeCount();
+            for (int j = 0; j < itemCount; ++j) {
+                int startChar = excludedCodePoints.getRangeStart(j);
+                int endChar = excludedCodePoints.getRangeEnd(j);
+                for (int col = 0; col < columns; col++) {
+                    pvec.setValue(startChar, endChar, col, ~0, ~0);
+                }
+            }
+        }
+
+        trie = pvec.compactToTrieWithRowIndexes();
+        pv = pvec.getCompactedArray();
+    }
+
+    // internal function to intersect two sets of masks
+    // returns whether the mask has reduced to all zeros. The
+    // second set of mask consists of len elements in pv starting from 
+    // pvIndex
+    private boolean intersectMasks(int[] dest, int pvIndex, int len) {
+        int oredDest = 0;
+        for (int i = 0; i < len; ++i) {
+            oredDest |= (dest[i] &= pv[pvIndex + i]);
+        }
+        return oredDest == 0;
+    }
+
+    // internal function
+    private List<String> selectForMask(int[] mask) {
+        // this is the context we will use. Store a table of indices to which
+        // encodings are legit
+
+        Vector<String> result = new Vector<String>();
+        int columns = (encodings.length + 31) / 32;
+        int numOnes = countOnes(mask, columns);
+
+        // now we know the exact space we need to index
+        if (numOnes > 0) {
+            int k = 0;
+            for (int j = 0; j < columns; j++) {
+                int v = mask[j];
+                for (int i = 0; i < 32 && k < encodings.length; i++, k++) {
+                    if ((v & 1) != 0) {
+                        result.addElement(encodings[k]);
+                    }
+                    v >>= 1;
+                }
+            }
+        }
+
+        // otherwise, index will remain NULL
+        return result;
+    }
+
+    // internal function to count how many 1's are there in a mask
+    // algorithm taken from http://graphics.stanford.edu/~seander/bithacks.html
+    private int countOnes(int[] mask, int len) {
+        int totalOnes = 0;
+        for (int i = 0; i < len; ++i) {
+            int ent = mask[i];
+            for (; ent != 0; totalOnes++) {
+                ent &= ent - 1; // clear the least significant bit set
+            }
+        }
+        return totalOnes;
+    }
+
+    /**
+     * Construct a CharsetSelector from a list of charset names.
+     * 
+     * @param charsetList
+     *            a list of charset names in the form of strings. If charsetList
+     *            is empty, a selector for all available charset is constructed.
+     * @param excludedCodePoints
+     *            a set of code points to be excluded from consideration.
+     *            Excluded code points appearing in the input CharSequence do
+     *            not change the selection result. It could be empty when no
+     *            code point should be excluded.
+     * @param mappingTypes
+     *            an int which determines whether to consider only roundtrip
+     *            mappings or also fallbacks, e.g. CharsetICU.ROUNDTRIP_SET. See
+     *            CharsetICU.java for the constants that are currently
+     *            supported.
+     * @throws IllegalArgumentException
+     *             if the parameters is invalid.
+     * @throws IllegalCharsetNameException
+     *             If the given charset name is illegal.
+     * @throws UnsupportedCharsetException
+     *             If no support for the named charset is available in this
+     *             instance of the Java virtual machine.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public CharsetSelector(List<String> charsetList, UnicodeSet excludedCodePoints,
+            int mappingTypes) {
+        if (mappingTypes != CharsetICU.ROUNDTRIP_AND_FALLBACK_SET
+                && mappingTypes != CharsetICU.ROUNDTRIP_SET) {
+            throw new IllegalArgumentException("Unsupported mappingTypes");
+        }
+
+        int encodingCount = charsetList.size();
+        if (encodingCount > 0) {
+            encodings = charsetList.toArray(new String[0]);
+        } else {
+            encodings = CharsetProviderICU.getAvailableNames();
+            encodingCount = encodings.length;
+        }
+
+        PropsVectors pvec = new PropsVectors((encodingCount + 31) / 32);
+        generateSelectorData(pvec, excludedCodePoints, mappingTypes);
+    }
+
+    /**
+     * Select charsets that can map all characters in a CharSequence, ignoring
+     * the excluded code points.
+     * 
+     * @param unicodeText
+     *            a CharSequence. It could be empty.
+     * @return a list that contains charset names in the form of strings. The
+     *         returned encoding names and their order will be the same as
+     *         supplied when building the selector.
+     * 
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public List<String> selectForString(CharSequence unicodeText) {
+        int columns = (encodings.length + 31) / 32;
+        int[] mask = new int[columns];
+        for (int i = 0; i < columns; i++) {
+            mask[i] = - 1; // set each bit to 1
+                           // Note: All integers are signed in Java, assigning
+                           // 2 ^ 32 -1 to mask is wrong!
+        }
+        int index = 0;
+        while (index < unicodeText.length()) {
+            int c = UTF16.charAt(unicodeText, index);
+            int pvIndex = trie.getCodePointValue(c);
+            index += UTF16.getCharCount(c);
+            if (intersectMasks(mask, pvIndex, columns)) {
+                break;
+            }
+        }
+        return selectForMask(mask);
+    }
+}
diff --git a/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16.java
new file mode 100644
index 0000000..43c13ce
--- /dev/null
+++ b/main/classes/charset/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/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16BE.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16BE.java
new file mode 100644
index 0000000..b1bb374
--- /dev/null
+++ b/main/classes/charset/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/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16LE.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF16LE.java
new file mode 100644
index 0000000..07607a0
--- /dev/null
+++ b/main/classes/charset/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/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF32.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF32.java
new file mode 100644
index 0000000..d2a8a5f
--- /dev/null
+++ b/main/classes/charset/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/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF32BE.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF32BE.java
new file mode 100644
index 0000000..177b1f7
--- /dev/null
+++ b/main/classes/charset/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/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF32LE.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF32LE.java
new file mode 100644
index 0000000..beb8303
--- /dev/null
+++ b/main/classes/charset/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/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF7.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF7.java
new file mode 100644
index 0000000..9447bdb
--- /dev/null
+++ b/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF7.java
@@ -0,0 +1,756 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2009, 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]=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]=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]=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=(inDirectMode<<24 | (((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 ? AMPERSAND : PLUS);
+                        if (target.hasRemaining()) {
+                            target.put(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 ? AMPERSAND : 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(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(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) | (inDirectMode<<24) | (((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/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF8.java b/main/classes/charset/src/com/ibm/icu/charset/CharsetUTF8.java
new file mode 100644
index 0000000..60f33a7
--- /dev/null
+++ b/main/classes/charset/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/main/classes/charset/src/com/ibm/icu/charset/UConverterAlias.java b/main/classes/charset/src/com/ibm/icu/charset/UConverterAlias.java
new file mode 100644
index 0000000..eac575a
--- /dev/null
+++ b/main/classes/charset/src/com/ibm/icu/charset/UConverterAlias.java
@@ -0,0 +1,831 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006-2009, 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, strlen(gStringTable, 2 * idx));
+    }
+
+    private static final String GET_NORMALIZED_STRING(int idx) {
+        return new String(gNormalizedStringTable, 2 * idx, 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[tableArray[converterListIndex]];
+            gTagList= new int[tableArray[tagListIndex]];
+            gAliasList = new int[tableArray[aliasListIndex]];
+            gUntaggedConvArray = new int[tableArray[untaggedConvArrayIndex]];
+            gTaggedAliasArray = new int[tableArray[taggedAliasArrayIndex]];
+            gTaggedAliasLists = new int[tableArray[taggedAliasListsIndex]];
+            gOptionTable = new int[tableArray[optionTableIndex]];
+            gStringTable = new byte[tableArray[stringTableIndex]*2];
+            gNormalizedStringTable = new byte[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[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[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[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 = 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 = 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 = 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[(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[(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[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[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[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[tagNum
+                    * gConverterList.length + convNum];
+            if (listOffset != 0
+                    && gTaggedAliasLists[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[idx];
+                    if (listOffset != 0 && isAliasInList(alias, listOffset)) {
+                        int currTagNum = idx / gConverterList.length;
+                        int currConvNum = (idx - currTagNum
+                                * gConverterList.length);
+                        int tempListOffset = gTaggedAliasArray[tagNum
+                                * gConverterList.length + currConvNum];
+                        if (tempListOffset != 0
+                                && gTaggedAliasLists[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[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[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[listOffset];
+            /* +1 to skip listCount */
+            int[] currList = gTaggedAliasLists;
+            int currListArrayIndex = listOffset + 1;
+            for (currAlias = 0; currAlias < listCount; currAlias++) {
+                if (currList[currAlias + currListArrayIndex] != 0
+                        && compareNames(
+                                alias,
+                                GET_STRING(currList[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[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/main/classes/charset/src/com/ibm/icu/charset/UConverterAliasDataReader.java b/main/classes/charset/src/com/ibm/icu/charset/UConverterAliasDataReader.java
new file mode 100644
index 0000000..fa1b21e
--- /dev/null
+++ b/main/classes/charset/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/main/classes/charset/src/com/ibm/icu/charset/UConverterConstants.java b/main/classes/charset/src/com/ibm/icu/charset/UConverterConstants.java
new file mode 100644
index 0000000..2fdf507
--- /dev/null
+++ b/main/classes/charset/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/main/classes/charset/src/com/ibm/icu/charset/UConverterDataReader.java b/main/classes/charset/src/com/ibm/icu/charset/UConverterDataReader.java
new file mode 100644
index 0000000..4b7d866
--- /dev/null
+++ b/main/classes/charset/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/main/classes/charset/src/com/ibm/icu/charset/UConverterSharedData.java b/main/classes/charset/src/com/ibm/icu/charset/UConverterSharedData.java
new file mode 100644
index 0000000..e69f40a
--- /dev/null
+++ b/main/classes/charset/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/main/classes/charset/src/com/ibm/icu/charset/UConverterStaticData.java b/main/classes/charset/src/com/ibm/icu/charset/UConverterStaticData.java
new file mode 100644
index 0000000..0ccd49b
--- /dev/null
+++ b/main/classes/charset/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/main/classes/charset/src/com/ibm/icu/charset/package.html b/main/classes/charset/src/com/ibm/icu/charset/package.html
new file mode 100644
index 0000000..a9e87ef
--- /dev/null
+++ b/main/classes/charset/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/main/classes/collate/.classpath b/main/classes/collate/.classpath
new file mode 100644
index 0000000..b0d608f
--- /dev/null
+++ b/main/classes/collate/.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-core"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="output" path="out/bin"/>
+</classpath>
diff --git a/main/classes/collate/.externalToolBuilders/copy-data-collate.launch b/main/classes/collate/.externalToolBuilders/copy-data-collate.launch
new file mode 100644
index 0000000..17542f2
--- /dev/null
+++ b/main/classes/collate/.externalToolBuilders/copy-data-collate.launch
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_AFTER_CLEAN_TARGETS" value="copy-data,"/>
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_MANUAL_TARGETS" value="copy-data,"/>
+<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-collate/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-collate"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.running" value="true"/>
+<mapEntry key="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-collate/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"/>
+</launchConfiguration>
diff --git a/main/classes/collate/.project b/main/classes/collate/.project
new file mode 100644
index 0000000..72983f2
--- /dev/null
+++ b/main/classes/collate/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>icu4j-collate</name>
+	<comment></comment>
+	<projects>
+		<project>icu4j-core</project>
+		<project>icu4j-shared</project>
+	</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/copy-data-collate.launch</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/main/classes/collate/.settings/org.eclipse.jdt.core.prefs b/main/classes/collate/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..d11b39f
--- /dev/null
+++ b/main/classes/collate/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,345 @@
+#Thu Aug 27 17:46:56 EDT 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+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.doc.comment.support=enabled
+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.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+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=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+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.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+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=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=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=warning
+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.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+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.unusedParameterIncludeDocCommentReference=enabled
+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.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
+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=120
+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_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not 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.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+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=120
+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/main/classes/collate/.settings/org.eclipse.jdt.ui.prefs b/main/classes/collate/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..977a256
--- /dev/null
+++ b/main/classes/collate/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,10 @@
+#Wed Jul 08 12:14:39 EDT 2009
+eclipse.preferences.version=1
+formatter_profile=_ICU4J Standard
+formatter_settings_version=11
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+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/main/classes/collate/build.properties b/main/classes/collate/build.properties
new file mode 100644
index 0000000..a21fb19
--- /dev/null
+++ b/main/classes/collate/build.properties
@@ -0,0 +1,6 @@
+#*******************************************************************************
+#* Copyright (C) 2009, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+shared.dir = ../../shared
+javac.compilerarg = -Xlint:all,-deprecation,-dep-ann
diff --git a/main/classes/collate/build.xml b/main/classes/collate/build.xml
new file mode 100644
index 0000000..6d78df9
--- /dev/null
+++ b/main/classes/collate/build.xml
@@ -0,0 +1,35 @@
+<!--
+*******************************************************************************
+* Copyright (C) 2009, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+-->
+<project name="collate" default="build" basedir=".">
+    <property file="build-local.properties"/>
+    <property file="build.properties"/>
+    <import file="${shared.dir}/build/common-targets.xml"/>
+
+    <path id="javac.classpathref">
+        <path refid="javac.classpathref.${ant.project.name}"/>
+    </path>
+    <property name="jar.file" value="${icu4j.collate.jar}"/>
+
+    <target name="build" depends="compile, copy, jar" description="Build the project"/>
+
+    <target name="build-all" depends="@build-all" description="Build the project including all dependencies"/>
+
+    <target name="clean" depends="@clean" description="Clean up the build outputs"/>
+
+    <target name="compile" depends="@compile" description="Compile java source files"/>
+
+    <target name="copy" depends="@copy, copy-data" description="Copy non-java runtime files to the project's binary directory"/>
+
+    <target name="jar" depends="compile, copy, @jar" description="Create the project's jar file"/>
+
+    <target name="copy-data" description="Extract pre-built ICU collation data files and copy them to the project's binary directory">
+        <unjar src="${icu4j.data.jar}" dest="${bin.dir}">
+            <patternset includes="**/coll/*"/>
+        </unjar>
+    </target>
+
+</project>
diff --git a/main/classes/collate/collate-build.launch b/main/classes/collate/collate-build.launch
new file mode 100644
index 0000000..5b723b1
--- /dev/null
+++ b/main/classes/collate/collate-build.launch
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<listAttribute key="org.eclipse.debug.collate.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j-collate/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.collate.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j-collate/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j-collate"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.running" value="true"/>
+<mapEntry key="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-collate/build.xml}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/main/classes/collate/manifest.stub b/main/classes/collate/manifest.stub
new file mode 100644
index 0000000..2a40430
--- /dev/null
+++ b/main/classes/collate/manifest.stub
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+
+Name: com/ibm/icu/text
+Specification-Title: ICU for Java Collation
+Specification-Version: @SPECVERSION@
+Specification-Vendor: ICU
+Implementation-Title: ICU for Java Collation
+Implementation-Version: @IMPLVERSION@
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: @COPYRIGHT@
\ No newline at end of file
diff --git a/main/classes/collate/src/com/ibm/icu/text/CollationElementIterator.java b/main/classes/collate/src/com/ibm/icu/text/CollationElementIterator.java
new file mode 100644
index 0000000..ce240b1
--- /dev/null
+++ b/main/classes/collate/src/com/ibm/icu/text/CollationElementIterator.java
@@ -0,0 +1,2885 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2009, 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(L);
+            m_buffer_.append(V);
+            if (T != HANGUL_TBASE_) {
+                m_buffer_.append(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();
+                    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/main/classes/collate/src/com/ibm/icu/text/CollationKey.java b/main/classes/collate/src/com/ibm/icu/text/CollationKey.java
new file mode 100644
index 0000000..c8d9057
--- /dev/null
+++ b/main/classes/collate/src/com/ibm/icu/text/CollationKey.java
@@ -0,0 +1,624 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2009, 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<CollationKey>
+{
+    // 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 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 = 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/main/classes/collate/src/com/ibm/icu/text/CollationParsedRuleBuilder.java b/main/classes/collate/src/com/ibm/icu/text/CollationParsedRuleBuilder.java
new file mode 100644
index 0000000..d1fb4d3
--- /dev/null
+++ b/main/classes/collate/src/com/ibm/icu/text/CollationParsedRuleBuilder.java
@@ -0,0 +1,4239 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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.Arrays;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Vector;
+
+import com.ibm.icu.impl.IntTrieBuilder;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.TrieBuilder;
+import com.ibm.icu.impl.TrieIterator;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UCharacterCategory;
+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 = 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 -------------------------------------------------
+
+    @SuppressWarnings("unused")
+    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<WeightRange> {
+        // 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(WeightRange target) {
+            if (this == target) {
+                return 0;
+            }
+            int tstart = 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<Integer> m_endExpansionCE_;
+        // vector of booleans
+        Vector<Boolean> m_isV_;
+        byte m_maxLSize_;
+        byte m_maxVSize_;
+        byte m_maxTSize_;
+
+        // package private constructor ---------------------------------------
+
+        MaxJamoExpansionTable() {
+            m_endExpansionCE_ = new Vector<Integer>();
+            m_isV_ = new Vector<Boolean>();
+            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_ = new Vector<Integer>(table.m_endExpansionCE_);
+            m_isV_ = new Vector<Boolean>(table.m_isV_);
+            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<Integer>();
+            m_expansionCESize_ = new Vector<Byte>();
+            m_endExpansionCE_.add(new Integer(0));
+            m_expansionCESize_.add(new Byte((byte) 0));
+        }
+
+        MaxExpansionTable(MaxExpansionTable table) {
+            m_endExpansionCE_ = new Vector<Integer>(table.m_endExpansionCE_);
+            m_expansionCESize_ = new Vector<Byte>(table.m_expansionCESize_);
+        }
+
+        // package private data member --------------------------------------
+
+        Vector<Integer> m_endExpansionCE_;
+        Vector<Byte> m_expansionCESize_;
+    }
+
+    private static class BasicContractionTable {
+        // package private constructors -------------------------------------
+
+        BasicContractionTable() {
+            m_CEs_ = new Vector<Integer>();
+            m_codePoints_ = new StringBuffer();
+        }
+
+        // package private data members -------------------------------------
+
+        StringBuffer m_codePoints_;
+        Vector<Integer> 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<BasicContractionTable>();
+            m_CEs_ = new Vector<Integer>();
+            m_codePoints_ = new StringBuffer();
+            m_offsets_ = new Vector<Integer>();
+            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_ = new Vector<BasicContractionTable>(table.m_elements_);
+            m_codePoints_ = new StringBuffer(table.m_codePoints_.toString());
+            m_CEs_ = new Vector<Integer>(table.m_CEs_);
+            m_offsets_ = new Vector<Integer>(table.m_offsets_);
+            m_currentTag_ = table.m_currentTag_;
+        }
+
+        // package private data members ------------------------------------
+
+        /**
+         * Vector of BasicContractionTable
+         */
+        Vector<BasicContractionTable> m_elements_;
+        IntTrieBuilder m_mapping_;
+        StringBuffer m_codePoints_;
+        Vector<Integer> m_CEs_;
+        Vector<Integer> m_offsets_;
+        int m_currentTag_;
+    }
+
+    /**
+     * Private class for combining mark table. The table is indexed by the class
+     * value(0-255).
+     */
+    @SuppressWarnings("unused")
+    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 The value of the code point.
+         * @param offset The value of the 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<Integer>();
+            // 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<Elements, Elements>();
+            // 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_ = new Vector<Integer>(table.m_expansions_);
+            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<Integer> m_expansions_;
+        ContractionTable m_contractions_;
+        // UCATableHeader image;
+        CollationRuleParser.OptionSet m_options_;
+        MaxExpansionTable m_maxExpansions_;
+        MaxJamoExpansionTable m_maxJamoExpansions_;
+        byte m_unsafeCP_[];
+        byte m_contrEndCP_[];
+        Hashtable<Elements, Elements> 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 = 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<Integer> 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 = 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<Integer> 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 = (maxexpansion.m_endExpansionCE_
+                    .get(mid)).intValue();
+            unsignedce &= 0xFFFFFFFFl;
+            if (unsigned <= unsignedce) {
+                limit = mid;
+            } else {
+                start = mid;
+            }
+        }
+
+        if ((maxexpansion.m_endExpansionCE_.get(start)).intValue() == endexpansion) {
+            result = start;
+        } else if ((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 ((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 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 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 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<Integer> 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] = 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] = 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] = 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] = 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 += 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<Integer> CEPointer = table.m_CEs_;
+        for (int i = 0; i < tsize; i++) {
+            BasicContractionTable bct = 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(CEPointer.get(offset + j).intValue())) {
+                    int ce = CEPointer.get(offset + j).intValue();
+                    CEPointer.set(offset + j,
+                            new Integer(constructSpecialCE(getCETag(ce),
+                                    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),
+                        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 ((maxjamoexpansion.m_isV_.get(count))
+                        .booleanValue() == true) {
+                    setMaxExpansion(
+                            (maxjamoexpansion.m_endExpansionCE_
+                                    .get(count)).intValue(), maxVSize,
+                            maxexpansion);
+                } else {
+                    setMaxExpansion(
+                            (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<Elements> els = t.m_prefixLookup_.elements();
+            while (els.hasMoreElements()) {
+                Elements e = 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 = 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 = 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<Integer> 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 = 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 = 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 = 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/main/classes/collate/src/com/ibm/icu/text/CollationRuleParser.java b/main/classes/collate/src/com/ibm/icu/text/CollationRuleParser.java
new file mode 100644
index 0000000..8866fe0
--- /dev/null
+++ b/main/classes/collate/src/com/ibm/icu/text/CollationRuleParser.java
@@ -0,0 +1,2069 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2009, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.text.ParseException;
+import java.util.Arrays;
+import java.util.Hashtable;
+
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.lang.UCharacter;
+
+/**
+* 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<Token, Token>();
+        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<Token, Token> 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 = 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 = 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
+     */
+    @SuppressWarnings("fallthrough")
+    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;
+                        }
+                        // fall through
+                    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 = 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_)) || UCharacterProperty.isRuleWhiteSpace(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/main/classes/collate/src/com/ibm/icu/text/Collator.java b/main/classes/collate/src/com/ibm/icu/text/Collator.java
new file mode 100644
index 0000000..20ed325
--- /dev/null
+++ b/main/classes/collate/src/com/ibm/icu/text/Collator.java
@@ -0,0 +1,1095 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2009, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.util.Comparator;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.LinkedList;
+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<Object>, 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;
+    }
+    
+    /**
+     * @internal
+     */
+    public Collator setStrength2(int newStrength)
+    {
+        setStrength(newStrength);
+        return this;
+    }
+
+    /**
+     * <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<String> 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<String> 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)
+            {
+                ///CLOVER:OFF
+                throw e;
+                ///CLOVER:ON
+            }
+            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) {
+            ClassLoader cl = Collator.class.getClassLoader();
+            return ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_COLLATION_BASE_NAME, cl);
+        }
+        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) {
+            ClassLoader cl = Collator.class.getClassLoader();
+            return ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_COLLATION_BASE_NAME, cl);
+        }
+        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);
+    }
+
+    /**
+     * Given a key 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.
+     * @param key           one of the keys supported by this service.  For now, only
+     *                      "collation" is supported.
+     * @param locale        the locale
+     * @param commonlyUsed  if set to true it will return only commonly used values
+     *                      with the given locale in preferred order.  Otherwise,
+     *                      it will return all the available values for the locale.
+     * @return an array of string values for the given key and the locale.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String[] getKeywordValuesForLocale(String key, ULocale locale, boolean commonlyUsed) {
+        // Note: The parameter commonlyUsed is actually not used.
+        // The switch is in the method signature for consistency
+        // with other locale services.
+
+        // Read available collation values from collation bundles
+        String baseLoc = locale.getBaseName();
+        LinkedList<String> values = new LinkedList<String>();
+
+        UResourceBundle bundle = UResourceBundle.getBundleInstance(
+                ICUResourceBundle.ICU_BASE_NAME + "/coll", baseLoc);
+
+        String defcoll = null;
+        while (bundle != null) {
+            UResourceBundle collations = bundle.get("collations");
+            Enumeration<String> collEnum = collations.getKeys();
+            while (collEnum.hasMoreElements()) {
+                String collkey = collEnum.nextElement();
+                if (collkey.equals("default")) {
+                    if (defcoll == null) {
+                        // Keep the default
+                        defcoll = collations.getString("default");
+                    }
+                } else if (!values.contains(collkey)) {
+                    values.add(collkey);
+                }
+            }
+            bundle = ((ICUResourceBundle)bundle).getParent();
+        }
+        // Reordering
+        Iterator<String> itr = values.iterator();
+        String[] result = new String[values.size()];
+        result[0] = defcoll;
+        int idx = 1;
+        while (itr.hasNext()) {
+            String collKey = itr.next();
+            if (!collKey.equals(defcoll)) {
+                result[idx++] = collKey;
+            }
+        }
+        return result;
+    }
+    /**
+     * 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[]) {
+        ClassLoader cl = Collator.class.getClassLoader();
+        return ICUResourceBundle.getFunctionalEquivalent(BASE, cl, 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_;
+    }
+
+    // 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>
+     * Compares the source Object to te target Object.
+     * </p>
+     * @param source the source Object.
+     * @param target the target Object.
+     * @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.
+     * @exception ClassCastException thrown if either arguments cannot be cast to String.
+     * @stable ICU 4.2
+     */
+    public int compare(Object source, Object target) {
+        return 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
+        ///CLOVER:OFF
+        // The following would not happen since the method is called
+        //  by other protected functions that checks and makes sure that
+        //  valid and actual are not null before passing
+        if ((valid == null) != (actual == null)) {
+            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/main/classes/collate/src/com/ibm/icu/text/CollatorReader.java b/main/classes/collate/src/com/ibm/icu/text/CollatorReader.java
new file mode 100644
index 0000000..b9d43d2
--- /dev/null
+++ b/main/classes/collate/src/com/ibm/icu/text/CollatorReader.java
@@ -0,0 +1,681 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2009, 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 java.nio.ByteBuffer;
+
+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;
+    }
+
+    public static InputStream makeByteBufferInputStream(final ByteBuffer buf) {
+        return new InputStream() {
+            public int read() throws IOException {
+                if (!buf.hasRemaining()) {
+                    return -1;
+                }
+                return buf.get() & 0xff;
+            }
+            public int read(byte[] bytes, int off, int len) throws IOException {
+                len = Math.min(len, buf.remaining());
+                buf.get(bytes, off, len);
+                return len;
+            }
+        };
+    }
+
+    static void initRBC(RuleBasedCollator rbc, ByteBuffer data) throws IOException {
+        final int MIN_BINARY_DATA_SIZE_ = (42 + 25) << 2;
+        int dataLength = data.remaining();
+        // TODO: Change the rest of this class to use the ByteBuffer directly, rather than
+        // a DataInputStream, except for passing an InputStream to ICUBinary.readHeader().
+        // Consider changing ICUBinary to also work with a ByteBuffer.
+        CollatorReader reader = new CollatorReader(makeByteBufferInputStream(data), false);
+        if (dataLength > 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) {
+            ///CLOVER:OFF
+            throw new IOException("Internal Error: Header size error");
+            ///CLOVER:ON
+        }
+        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) {
+            ///CLOVER:OFF
+            throw new IOException("Internal Error: Option size error");
+            ///CLOVER:ON
+        }
+    }
+    
+    /**
+    * 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_) {
+                ///CLOVER:OFF
+                throw new IOException("Internal Error: Data file size error");
+                ///CLOVER:ON
+            }
+            return result;
+        }
+        if (readcount != m_size_) {
+            ///CLOVER:OFF
+            throw new IOException("Internal Error: Data file size error");
+            ///CLOVER:ON
+        }
+        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/main/classes/collate/src/com/ibm/icu/text/CollatorServiceShim.java b/main/classes/collate/src/com/ibm/icu/text/CollatorServiceShim.java
new file mode 100644
index 0000000..6d08c82
--- /dev/null
+++ b/main/classes/collate/src/com/ibm/icu/text/CollatorServiceShim.java
@@ -0,0 +1,145 @@
+/**
+*******************************************************************************
+* Copyright (C) 2003-2009, 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.ICUService;
+import com.ibm.icu.impl.ICULocaleService.LocaleKeyFactory;
+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) {
+                ///CLOVER:OFF
+                //Can't really change coll after it's been initialized
+                throw new MissingResourceException("Could not locate Collator data", "", "");
+                ///CLOVER:ON
+            }
+            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<String> 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
+        Locale[] result;
+        if (service.isDefault()) {
+            ClassLoader cl = getClass().getClassLoader();
+            result = ICUResourceBundle.getAvailableLocales(ICUResourceBundle.ICU_COLLATION_BASE_NAME, cl);
+        } else {
+            result = service.getAvailableLocales();
+        }
+        return result;
+    }
+
+    ULocale[] getAvailableULocales() {
+        ULocale[] result;
+        if (service.isDefault()) {
+            ClassLoader cl = getClass().getClassLoader();
+            result = ICUResourceBundle.getAvailableULocales(ICUResourceBundle.ICU_COLLATION_BASE_NAME, cl);
+        } else {
+            result = service.getAvailableULocales();
+        }
+        return result;
+    }
+
+    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();
+        }
+        ///CLOVER:OFF
+        // The following method can not be reached by testing
+        protected Object handleDefault(Key key, String[] actualIDReturn) {
+            if (actualIDReturn != null) {
+                actualIDReturn[0] = "root";
+            }
+            try {
+                return new RuleBasedCollator(ULocale.ROOT);
+            }
+            catch (MissingResourceException e) {
+                return null;
+            }
+        }
+        ///CLOVER:ON
+    }
+    private static ICULocaleService service = new CService();
+}
diff --git a/main/classes/collate/src/com/ibm/icu/text/IndexCharacters.java b/main/classes/collate/src/com/ibm/icu/text/IndexCharacters.java
new file mode 100644
index 0000000..11c9bd0
--- /dev/null
+++ b/main/classes/collate/src/com/ibm/icu/text/IndexCharacters.java
@@ -0,0 +1,281 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008-2009, 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.impl.MultiComparator;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.LocaleData;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * 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<String> indexCharacters;
+    private LinkedHashMap<String, Set<String>> alreadyIn = new LinkedHashMap<String, Set<String>>();
+    private List<String> noDistinctSorting = new ArrayList<String>();
+    private List<String> notAlphabetic = new ArrayList<String>();
+
+    /**
+     * Create the index object.
+     * @param locale The locale to be passed.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public IndexCharacters(ULocale locale) {
+        this(locale, LocaleData.getExemplarSet(locale, LocaleData.ES_STANDARD), Collator.getInstance(locale));
+    }
+
+    @SuppressWarnings("unchecked")
+    public IndexCharacters(ULocale locale, UnicodeSet exemplarSet, Collator collator) {
+        this.locale = locale;
+        try {
+            comparator = (Collator) collator.clone();
+        } catch (CloneNotSupportedException e) {
+            throw new IllegalArgumentException(e);
+        }
+        comparator.setStrength(Collator.PRIMARY);
+
+        // get the exemplars, and handle special cases
+
+        UnicodeSet exemplars = exemplarSet.cloneAsThawed();
+        // 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
+        Comparator<Object>[] comparators = (Comparator<Object>[])new Comparator[2];
+        comparators[0] = comparator;
+        comparators[1] = new PreferenceComparator(Collator.getInstance(locale));
+
+        Set<String> preferenceSorting = new TreeSet<String>(new MultiComparator<Object>(comparators));
+        for (UnicodeSetIterator it = new UnicodeSetIterator(exemplars); it.next();) {
+            preferenceSorting.add(it.getString());
+        }
+
+        indexCharacters = new TreeSet<String>(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 (String item : preferenceSorting) {
+            item = UCharacter.toUpperCase(locale, item);
+            if (indexCharacters.contains(item)) {
+                for (String itemAlreadyIn : indexCharacters) {
+                    if (comparator.compare(item, itemAlreadyIn) == 0) {
+                        Set<String> targets = alreadyIn.get(itemAlreadyIn);
+                        if (targets == null) {
+                            alreadyIn.put(itemAlreadyIn, targets = new LinkedHashSet<String>());
+                        }
+                        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<String> 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<String> 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<String, Set<String>> 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<String> 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<String> 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<Object> {
+        static final Comparator<String> binary = new UTF16.StringComparator(true,false,0);
+        final Collator collator;
+
+        public PreferenceComparator(Collator collator) {
+            this.collator = collator;
+        }
+
+        public int compare(Object o1, Object o2) {
+            return compare((String)o1, (String)o2);
+        }
+
+        public int compare(String s1, String s2) {
+            if (s1 == s2) {
+                return 0;
+            }
+            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);
+        }
+    }
+}
diff --git a/main/classes/collate/src/com/ibm/icu/text/RawCollationKey.java b/main/classes/collate/src/com/ibm/icu/text/RawCollationKey.java
new file mode 100644
index 0000000..a8d9ead
--- /dev/null
+++ b/main/classes/collate/src/com/ibm/icu/text/RawCollationKey.java
@@ -0,0 +1,102 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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(RawCollationKey rhs) {
+        int result = super.compareTo(rhs);
+        return result < 0 ? -1 : result == 0 ? 0 : 1;
+    }
+}
diff --git a/main/classes/collate/src/com/ibm/icu/text/RbnfScannerProviderImpl.java b/main/classes/collate/src/com/ibm/icu/text/RbnfScannerProviderImpl.java
new file mode 100644
index 0000000..44a384a
--- /dev/null
+++ b/main/classes/collate/src/com/ibm/icu/text/RbnfScannerProviderImpl.java
@@ -0,0 +1,260 @@
+/*
+*******************************************************************************
+* Copyright (C) 2009, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.util.ULocale;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Returns RbnfLenientScanners that use the old RuleBasedNumberFormat
+ * implementation behind setLenientParseMode, which is based on Collator.
+ */
+public class RbnfScannerProviderImpl implements RbnfLenientScannerProvider {
+    private Map<String, RbnfLenientScanner> cache;
+
+    public RbnfScannerProviderImpl() {
+        cache = new HashMap<String, RbnfLenientScanner>();
+    }
+
+    /**
+     * Returns a collation-based scanner.
+     *
+     * 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".
+     */
+    public RbnfLenientScanner get(ULocale locale, String extras) {
+        RbnfLenientScanner result = null;
+        String key = locale.toString() + "/" + extras;
+        synchronized(cache) {
+            result = cache.get(key);
+            if (result != null) {
+                return result;
+            }
+        }
+        result = createScanner(locale, extras);
+        synchronized(cache) {
+            cache.put(key, result);
+        }
+        return result;
+    }
+
+    protected RbnfLenientScanner createScanner(ULocale locale, String extras) {
+        RuleBasedCollator collator = null;
+        try {
+            // create a default collator based on the locale,
+            // then pull out that collator's rules, append any additional
+            // rules specified in the description, and create a _new_
+            // collator based on the combination of those rules
+            collator = (RuleBasedCollator)Collator.getInstance(locale.toLocale());
+            if (extras != null) {
+                String rules = collator.getRules() + extras;
+                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
+            ///CLOVER:OFF
+            if (true){ // debug hook
+                e.printStackTrace(); System.out.println("++++");
+            }
+            collator = null;
+            ///CLOVER:ON
+        }
+
+        return new RbnfLenientScannerImpl(collator);
+    }
+
+    private static class RbnfLenientScannerImpl implements RbnfLenientScanner {
+        private final RuleBasedCollator collator;
+
+        private RbnfLenientScannerImpl(RuleBasedCollator rbc) {
+            this.collator = rbc;
+        }
+
+        public boolean allIgnorable(String s) {
+            CollationElementIterator iter = collator.getCollationElementIterator(s);
+
+            int o = iter.next();
+            while (o != CollationElementIterator.NULLORDER
+                   && CollationElementIterator.primaryOrder(o) == 0) {
+                o = iter.next();
+            }
+            return o == CollationElementIterator.NULLORDER;
+        }
+
+        public int[] findText(String str, String key, int startingAt) {
+            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 };
+        }
+
+        ///CLOVER:OFF
+        // The following method contains the same signature as findText
+        //  and has never been used by anything once.
+        @SuppressWarnings("unused")
+        public int[] findText2(String str, String key, int startingAt) {
+
+            CollationElementIterator strIter = collator.getCollationElementIterator(str);
+            CollationElementIterator keyIter = collator.getCollationElementIterator(key);
+
+            int keyStart = -1;
+
+            strIter.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 };
+            }
+
+            return new int[] { -1, 0 };
+        }
+        ///CLOVER:ON
+
+        public int prefixLength(String str, String prefix) {
+            // Create two collation element iterators, one over the target string
+            // and another over the prefix.
+            //
+            // 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.
+
+            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();
+            }
+
+            int result = strIter.getOffset();
+            if (oStr != CollationElementIterator.NULLORDER) {
+                --result;
+            }
+            return result;
+        }
+    }
+}
\ No newline at end of file
diff --git a/main/classes/collate/src/com/ibm/icu/text/RuleBasedCollator.java b/main/classes/collate/src/com/ibm/icu/text/RuleBasedCollator.java
new file mode 100644
index 0000000..a32fd2b
--- /dev/null
+++ b/main/classes/collate/src/com/ibm/icu/text/RuleBasedCollator.java
@@ -0,0 +1,4679 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2009, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.text.CharacterIterator;
+import java.text.ParseException;
+import java.util.Arrays;
+import java.util.MissingResourceException;
+
+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.
+     * @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 Throws an exception if any errors occurs.
+     * @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_)) {
+            return false;
+        }
+        // not comparing paddings
+        for (int i = 0; i < m_expansionEndCE_.length; i++) {
+            if (m_expansionEndCEMaxSize_[i] != other.m_expansionEndCEMaxSize_[i]) {
+                return false;
+            }
+       }
+        return true;
+    }
+
+    /**
+     * 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];
+                        CollatorReader.initRBC(this, buf);
+                        /*
+                        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 = 0x27;
+    //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/main/classes/collate/src/com/ibm/icu/text/StringSearch.java b/main/classes/collate/src/com/ibm/icu/text/StringSearch.java
new file mode 100644
index 0000000..0fbedbf
--- /dev/null
+++ b/main/classes/collate/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/main/classes/collate/src/com/ibm/icu/util/GlobalizationPreferences.java b/main/classes/collate/src/com/ibm/icu/util/GlobalizationPreferences.java
new file mode 100644
index 0000000..8f4ae16
--- /dev/null
+++ b/main/classes/collate/src/com/ibm/icu/util/GlobalizationPreferences.java
@@ -0,0 +1,1514 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2009, 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.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 (retainAll)
+ * @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<GlobalizationPreferences> {
+    
+    /**
+     * 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<ULocale> 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<ULocale> getLocales() {
+        List<ULocale> result;
+        if (locales == null) {
+            result = guessLocales();
+        } else {
+            result = new ArrayList<ULocale>(); 
+            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<ULocale> lcls = locales;
+        if (lcls == null) {
+            lcls = guessLocales();
+        }
+        if (index >= 0 && index < lcls.size()) {
+            return 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<ULocale> fallbacks = getLocales();
+        for (int i = 0; i < fallbacks.size(); i++) {
+            String localeName = (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 The collator object to be passed.
+     * @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 (ULocale locale : getLocales()) {
+            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<ULocale> processLocales(List<ULocale> inputLocales) {
+        List<ULocale> result = new ArrayList<ULocale>();
+        /*
+         * 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 = 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 = 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 = 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 = result.get(index);
+            boolean bRemoved = false;
+            for (int i = index + 1; i < result.size(); i++) {
+                if (uloc.equals(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 (ULocale locale : getLocales()) {
+            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 = language_territory_hack_map.get(language + "_" + script);
+        }
+        if (result == null) {
+            result = 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<ULocale> guessLocales() {
+        if (implicitLocales == null) {
+            List<ULocale> result = new ArrayList<ULocale>(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 = 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<ULocale> 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<ULocale> implicitLocales;
+    
+    {
+        reset();
+    }
+
+
+    private ULocale getAvailableLocale(int type) {
+        List<ULocale> locs = getLocales();
+        ULocale result = null;
+        for (int i = 0; i < locs.size(); i++) {
+            ULocale l = locs.get(i);
+            if (isAvailableLocale(l, type)) {
+                result = l;
+                break;
+            }
+        }
+        return result;
+    }
+
+    private boolean isAvailableLocale(ULocale loc, int type) {
+        BitSet bits = available_locales.get(loc);
+        if (bits != null && bits.get(type)) {
+            return true;
+        }
+        return false;        
+    }
+    
+    /*
+     * Available locales for service types
+     */
+    private static final HashMap<ULocale, BitSet> available_locales = new HashMap<ULocale, BitSet>();
+    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 = 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 = 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 = 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 = 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 = 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<String, String> language_territory_hack_map = new HashMap<String, String>();
+    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<String, String> territory_tzid_hack_map = new HashMap<String, String>();
+    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 GlobalizationPreferences freeze() {
+        frozen = true;
+        return this;
+    }
+
+    /**
+     * @draft ICU 3.6
+     * @provisional This API might change or be removed in a future release.
+     */
+    public GlobalizationPreferences cloneAsThawed() {
+        try {
+            GlobalizationPreferences result = (GlobalizationPreferences) clone();
+            result.frozen = false;
+            return result;
+        } catch (CloneNotSupportedException e) {
+            // will always work
+            return null;
+        }
+    }
+}
+
diff --git a/main/classes/core/.classpath b/main/classes/core/.classpath
new file mode 100644
index 0000000..11e1777
--- /dev/null
+++ b/main/classes/core/.classpath
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry excluding="**/.svn/" kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="output" path="out/bin"/>
+</classpath>
diff --git a/main/classes/core/.externalToolBuilders/copy-data-core.launch b/main/classes/core/.externalToolBuilders/copy-data-core.launch
new file mode 100644
index 0000000..0bf2045
--- /dev/null
+++ b/main/classes/core/.externalToolBuilders/copy-data-core.launch
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_AFTER_CLEAN_TARGETS" value="copy-data,"/>
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_MANUAL_TARGETS" value="copy-data,"/>
+<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-core/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-core"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.running" value="true"/>
+<mapEntry key="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-core/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"/>
+</launchConfiguration>
diff --git a/main/classes/core/.project b/main/classes/core/.project
new file mode 100644
index 0000000..cbd1fb1
--- /dev/null
+++ b/main/classes/core/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>icu4j-core</name>
+	<comment></comment>
+	<projects>
+		<project>icu4j-shared</project>
+	</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/copy-data-core.launch</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/main/classes/core/.settings/org.eclipse.jdt.core.prefs b/main/classes/core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..e46367f
--- /dev/null
+++ b/main/classes/core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,345 @@
+#Thu Aug 27 17:47:12 EDT 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+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.doc.comment.support=enabled
+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.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+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=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+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.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+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=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=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=warning
+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.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+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.unusedParameterIncludeDocCommentReference=enabled
+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.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
+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=120
+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_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not 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.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+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=120
+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/main/classes/core/.settings/org.eclipse.jdt.ui.prefs b/main/classes/core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..646a392
--- /dev/null
+++ b/main/classes/core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,10 @@
+#Wed Jun 17 11:09:27 EDT 2009
+eclipse.preferences.version=1
+formatter_profile=_ICU4J Standard
+formatter_settings_version=11
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+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/main/classes/core/build.properties b/main/classes/core/build.properties
new file mode 100644
index 0000000..a21fb19
--- /dev/null
+++ b/main/classes/core/build.properties
@@ -0,0 +1,6 @@
+#*******************************************************************************
+#* Copyright (C) 2009, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+shared.dir = ../../shared
+javac.compilerarg = -Xlint:all,-deprecation,-dep-ann
diff --git a/main/classes/core/build.xml b/main/classes/core/build.xml
new file mode 100644
index 0000000..9e211e3
--- /dev/null
+++ b/main/classes/core/build.xml
@@ -0,0 +1,40 @@
+<!--
+*******************************************************************************
+* Copyright (C) 2009, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+-->
+<project name="core" default="build" basedir=".">
+    <property file="build-local.properties"/>
+    <property file="build.properties"/>
+    <import file="${shared.dir}/build/common-targets.xml"/>
+
+    <path id="javac.classpathref">
+        <path refid="javac.classpathref.${ant.project.name}"/>
+    </path>
+    <property name="jar.file" value="${icu4j.core.jar}"/>
+
+    <target name="build" depends="compile, copy, jar" description="Build the project"/>
+
+    <target name="build-all" depends="@build-all" description="Build the project including all dependencies"/>
+
+    <target name="clean" depends="@clean" description="Clean up the build outputs"/>
+
+    <target name="compile" depends="@compile" description="Compile java source files"/>
+
+    <target name="copy" depends="@copy, copy-data" description="Copy non-java runtime files to the project's binary directory"/>
+
+    <target name="jar" depends="compile, copy, @jar" description="Create the project's jar file"/>
+
+    <target name="copy-data" description="Extract pre-built ICU core data files and copy them to the project's binary directory">
+        <unjar src="${icu4j.data.jar}" dest="${bin.dir}">
+            <patternset>
+	        <exclude name="**/coll/*"/>
+                <exclude name="**/*.cnv"/>
+                <exclude name="**/convalias.icu"/>
+	        <exclude name="**/translit/*"/>
+            </patternset>
+        </unjar>
+    </target>
+
+</project>
diff --git a/main/classes/core/core-build.launch b/main/classes/core/core-build.launch
new file mode 100644
index 0000000..2b3b3d7
--- /dev/null
+++ b/main/classes/core/core-build.launch
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j-core/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j-core"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.running" value="true"/>
+<mapEntry key="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-core/build.xml}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/main/classes/core/manifest.stub b/main/classes/core/manifest.stub
new file mode 100644
index 0000000..4e64b05
--- /dev/null
+++ b/main/classes/core/manifest.stub
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+
+Name: com/ibm/icu/
+Specification-Title: ICU for Java
+Specification-Version: @SPECVERSION@
+Specification-Vendor: ICU
+Implementation-Title: ICU for Java
+Implementation-Version: @IMPLVERSION@
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: @COPYRIGHT@
\ No newline at end of file
diff --git a/main/classes/core/src/com/ibm/icu/ICUConfig.properties b/main/classes/core/src/com/ibm/icu/ICUConfig.properties
new file mode 100644
index 0000000..fa00e2d
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/Assert.java b/main/classes/core/src/com/ibm/icu/impl/Assert.java
new file mode 100644
index 0000000..7d8b113
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/BOCU.java b/main/classes/core/src/com/ibm/icu/impl/BOCU.java
new file mode 100644
index 0000000..898eb47
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/BOCU.java
@@ -0,0 +1,378 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2009, 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 
+ * 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/main/classes/core/src/com/ibm/icu/impl/CalendarAstronomer.java b/main/classes/core/src/com/ibm/icu/impl/CalendarAstronomer.java
new file mode 100644
index 0000000..21af6f3
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/CalendarCache.java b/main/classes/core/src/com/ibm/icu/impl/CalendarCache.java
new file mode 100644
index 0000000..c83562a
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/CalendarData.java b/main/classes/core/src/com/ibm/icu/impl/CalendarData.java
new file mode 100644
index 0000000..06a9c22
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/CalendarData.java
@@ -0,0 +1,167 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.util.ArrayList;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.UResourceBundleIterator;
+
+/**
+ * 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 String[] getDateTimePatterns(){
+        ICUResourceBundle bundle = get("DateTimePatterns");
+        ArrayList<String> list = new ArrayList<String>();
+        UResourceBundleIterator iter = bundle.getIterator();
+        while (iter.hasNext()) {
+            UResourceBundle patResource = iter.next();
+            int resourceType = patResource.getType();
+            switch (resourceType) {
+                case UResourceBundle.STRING:
+                    list.add(patResource.getString());
+                    break;
+                case UResourceBundle.ARRAY:
+                    String[] items = patResource.getStringArray();
+                    list.add(items[0]);
+                    break;
+            }
+        }
+
+        return list.toArray(new String[list.size()]);
+    }
+
+    public String[] getOverrides(){
+        ICUResourceBundle bundle = get("DateTimePatterns");
+        ArrayList<String> list = new ArrayList<String>();
+        UResourceBundleIterator iter = bundle.getIterator();
+        while (iter.hasNext()) {
+            UResourceBundle patResource = iter.next();
+            int resourceType = patResource.getType();
+            switch (resourceType) {
+                case UResourceBundle.STRING:
+                    list.add(null);
+                    break;
+                case UResourceBundle.ARRAY:
+                    String[] items = patResource.getStringArray();
+                    list.add(items[1]);
+                    break;
+            }
+        }
+        return list.toArray(new String[list.size()]);
+    }
+
+    public ULocale getULocale() {
+        return fBundle.getULocale();
+    }
+
+    private ICUResourceBundle fBundle;
+    private String fMainType;
+    private String fFallbackType;
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/CalendarUtil.java b/main/classes/core/src/com/ibm/icu/impl/CalendarUtil.java
new file mode 100644
index 0000000..c43675b
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/CalendarUtil.java
@@ -0,0 +1,100 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, 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;
+
+/**
+ * Calendar utilities.
+ * 
+ * Date/time format service classes in com.ibm.icu.text packages
+ * sometimes need to access calendar internal APIs.  But calendar
+ * classes are in com.ibm.icu.util package, so the package local
+ * cannot be used.  This class is added in com.ibm.icu.impl
+ * package for sharing some calendar internal code for calendar
+ * and date format.
+ */
+public class CalendarUtil {
+
+    private static ICUCache<String, String> CALTYPE_CACHE = new SimpleCache<String, String>();
+
+    private static final String CALKEY = "calendar";
+    private static final String DEFCAL = "gregorian";
+
+    /**
+     * Returns a calendar type for the given locale.
+     * When the given locale has calendar keyword, the
+     * value of calendar keyword is returned.  Otherwise,
+     * the default calendar type for the locale is returned.
+     * @param loc The locale
+     * @return Calendar type string, such as "gregorian"
+     */
+    public static String getCalendarType(ULocale loc) {
+        String calType = null;
+
+        calType = loc.getKeywordValue(CALKEY);
+        if (calType != null) {
+            return calType;
+        }
+
+        String baseLoc = loc.getBaseName();
+
+        // Check the cache
+        calType = CALTYPE_CACHE.get(baseLoc);
+        if (calType != null) {
+            return calType;
+        }
+
+        // Canonicalize, so grandfathered variant will be transformed to keywords
+        ULocale canonical = ULocale.createCanonical(loc.toString());
+        calType = canonical.getKeywordValue("calendar");
+
+        if (calType == null) {
+            // When calendar keyword is not available, use the locale's
+            // region to get the default calendar type
+            String region = canonical.getCountry();
+            if (region.length() == 0) {
+                ULocale fullLoc = ULocale.addLikelySubtags(canonical);
+                region = fullLoc.getCountry();
+            }
+
+            // Read supplementalData to get the default calendar type for
+            // the locale's region
+            try {
+                UResourceBundle rb = UResourceBundle.getBundleInstance(
+                                        ICUResourceBundle.ICU_BASE_NAME,
+                                        "supplementalData",
+                                        ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+                UResourceBundle calPref = rb.get("calendarPreferenceData");
+                UResourceBundle order = null;
+                try {
+                    order = calPref.get(region);
+                } catch (MissingResourceException mre) {
+                    // use "001" as fallback
+                    order = calPref.get("001");
+                }
+                // the first calendar type is the default for the region
+                calType = order.getString(0);
+            } catch (MissingResourceException mre) {
+                // fall through
+            }
+
+            if (calType == null) {
+                // Use "gregorian" as the last resort fallback.
+                calType = DEFCAL;
+            }
+        }
+
+        // Cache the resolved value for the next time
+        CALTYPE_CACHE.put(baseLoc, calType);
+
+        return calType;
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/CharTrie.java b/main/classes/core/src/com/ibm/icu/impl/CharTrie.java
new file mode 100644
index 0000000..06407b1
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/CharTrie.java
@@ -0,0 +1,357 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2009, 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
+     */
+    @SuppressWarnings("all") // No way to ignore dead code warning specifically - see eclipse bug#282770
+    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/main/classes/core/src/com/ibm/icu/impl/CharacterIteratorWrapper.java b/main/classes/core/src/com/ibm/icu/impl/CharacterIteratorWrapper.java
new file mode 100644
index 0000000..34c4a57
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/DateNumberFormat.java b/main/classes/core/src/com/ibm/icu/impl/DateNumberFormat.java
new file mode 100644
index 0000000..a6e2b82
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/DateNumberFormat.java
@@ -0,0 +1,209 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2007-2009, 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<ULocale, char[]> CACHE = new SimpleCache<ULocale, char[]>();
+
+    private int maxIntDigits;
+    private int minIntDigits;
+ 
+    public DateNumberFormat(ULocale loc, char zeroDigitIn) {
+        initialize(loc,zeroDigitIn);
+    }
+
+/*    public DateNumberFormat(char zeroDigit, char minusSign) {
+        this.zeroDigit = zeroDigit;
+        this.minusSign = minusSign;
+    }
+*/
+
+    private void initialize(ULocale loc,char zeroDigitIn) {
+        char[] elems = 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] = zeroDigitIn;
+            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");
+    }
+
+    public StringBuffer format(java.math.BigDecimal number, StringBuffer toAppendTo,
+            FieldPosition pos) {
+        throw new UnsupportedOperationException("StringBuffer format(BigDecimal, StringBuffer, FieldPostion) is not implemented");
+    }
+
+    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/main/classes/core/src/com/ibm/icu/impl/Differ.java b/main/classes/core/src/com/ibm/icu/impl/Differ.java
new file mode 100644
index 0000000..a4a29f3
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/Differ.java
@@ -0,0 +1,171 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2009, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+/** 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/main/classes/core/src/com/ibm/icu/impl/Grego.java b/main/classes/core/src/com/ibm/icu/impl/Grego.java
new file mode 100644
index 0000000..e5fbacc
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/ICUBinary.java b/main/classes/core/src/com/ibm/icu/impl/ICUBinary.java
new file mode 100644
index 0000000..72f9cc4
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/ICUBinaryStream.java b/main/classes/core/src/com/ibm/icu/impl/ICUBinaryStream.java
new file mode 100644
index 0000000..a535df8
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/ICUBinaryStream.java
@@ -0,0 +1,58 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2009, 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");
+        }
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/ICUCache.java b/main/classes/core/src/com/ibm/icu/impl/ICUCache.java
new file mode 100644
index 0000000..5e8a08c
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/ICUCache.java
@@ -0,0 +1,21 @@
+/*
+ ***************************************************************************
+ * Copyright (c) 2007-2009 International Business Machines Corporation and *
+ * others.  All rights reserved.                                           *
+ ***************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+public interface ICUCache<K, V> {
+    // 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(K key, V value);
+    public V get(Object key);
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/ICUConfig.java b/main/classes/core/src/com/ibm/icu/impl/ICUConfig.java
new file mode 100644
index 0000000..4b3051f
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/ICUData.java b/main/classes/core/src/com/ibm/icu/impl/ICUData.java
new file mode 100644
index 0000000..b47b278
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/ICUData.java
@@ -0,0 +1,113 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2009, 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 = AccessController.doPrivileged(new PrivilegedAction<URL>() {
+                    public URL 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 = AccessController.doPrivileged(new PrivilegedAction<InputStream>() {
+                    public InputStream 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 = AccessController.doPrivileged(new PrivilegedAction<InputStream>() {
+                    public InputStream 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/main/classes/core/src/com/ibm/icu/impl/ICUDataVersion.java b/main/classes/core/src/com/ibm/icu/impl/ICUDataVersion.java
new file mode 100644
index 0000000..3f3fcdc
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/ICUDataVersion.java
@@ -0,0 +1,98 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2009, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import com.ibm.icu.util.VersionInfo;
+import com.ibm.icu.util.UResourceBundle;
+
+import java.util.MissingResourceException;
+
+public final class ICUDataVersion {
+    private static final String U_ICU_VERSION_BUNDLE = "icuver";
+    private static final String U_ICU_STD_BUNDLE = "icustd";
+    
+    private static final String U_ICU_DATA_KEY = "DataVersion";
+    
+    /**
+     * This function loads up icuver and compares the data version to the wired-in ICU_DATA_VERSION.
+     * If icuver shows something less than ICU_DATA_VERSION it returns TRUE, else FALSE. The version
+     * found will be returned in the first fillin parameter (if non-null), and *isModified will be set
+     * to TRUE if "icustd" is NOT found. Thus, if the data has been repackaged or modified, "icustd"
+     * (standard ICU) will be missing, and the function will alert the caller that the data is not standard.
+     * 
+     * @param dataVersionFillin icuver data version information to be filled in if not-null
+     * @return TRUE if ICU_DATA_VERSION is newer than icuver, else FALSE
+     * 
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static boolean isDataOlder(VersionInfo dataVersionFillin) {
+        boolean result = true;
+        
+        VersionInfo dataVersion = getDataVersion();
+        
+        if (dataVersion!= null) {
+            if (dataVersion.compareTo(VersionInfo.ICU_DATA_VERSION) != -1) {
+                result = false;
+            }
+            
+            if (dataVersionFillin != null) {
+                dataVersionFillin = VersionInfo.getInstance(dataVersion.toString());
+            }
+        }
+        
+        return result;
+    }
+    
+    /**
+     * This function tests whether "icustd" is available in the data. If the data has been repackaged or modified, "icustd"
+     * (standard ICU) will be missing, and the function will alert the caller that the data is not standard.
+     *
+     * @return TRUE if data has been modified, else FALSE
+     * 
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static boolean isDataModified() {
+        if (hasICUSTDBundle()) {
+            return false;
+        }
+        return true;
+    }
+    
+    /**
+     * This function retrieves the data version from icuver and returns a VersionInfo object with that version information.
+     *
+     * @return Current icu data version
+     * 
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static VersionInfo getDataVersion() {
+        UResourceBundle icudatares = null;
+        try {
+            icudatares = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, ICUDataVersion.U_ICU_VERSION_BUNDLE, ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+            icudatares = icudatares.get(ICUDataVersion.U_ICU_DATA_KEY);
+        } catch (MissingResourceException ex) {
+            return null;
+        }
+        
+        return  VersionInfo.getInstance(icudatares.getString());
+    }
+    
+    private static boolean hasICUSTDBundle() {
+        try {
+            UResourceBundle.getBundleInstance(ICUDataVersion.U_ICU_STD_BUNDLE);
+        } catch (MissingResourceException ex) {
+            return false;
+        }
+        
+        return true;
+    }
+    
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/ICUDebug.java b/main/classes/core/src/com/ibm/icu/impl/ICUDebug.java
new file mode 100644
index 0000000..3b5fd90
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/ICULocaleService.java b/main/classes/core/src/com/ibm/icu/impl/ICULocaleService.java
new file mode 100644
index 0000000..66635f1
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/ICULocaleService.java
@@ -0,0 +1,611 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.util.Collections;
+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<String> visIDs = getVisibleIDs();
+        Locale[] locales = new Locale[visIDs.size()];
+        int n = 0;
+        for (String id : visIDs) {
+            Locale loc = LocaleUtility.getLocaleFromName(id);
+            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<String> visIDs = getVisibleIDs();
+        ULocale[] locales = new ULocale[visIDs.size()];
+        int n = 0;
+        for (String id : visIDs) {
+            locales[n++] = new ULocale(id);
+        }
+        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<String> supported = getSupportedIDs();
+                return supported.contains(id);
+            }
+            return false;
+        }
+
+        /**
+         * Override of superclass method.
+         */
+        public void updateVisibleIDs(Map<String, Factory> result) {
+            Set<String> cache = getSupportedIDs();
+            for (String id : cache) {
+                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<String> getSupportedIDs() {
+            return Collections.emptySet();
+        }
+
+        /**
+         * 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<String, Factory> 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<String> getSupportedIDs() {
+            // note: "root" is one of the ids, but "" is not.  Must convert ULocale.ROOT.
+            return ICUResourceBundle.getFullLocaleNameSet(bundleName, loader()); 
+        }
+
+        /**
+         * Override of superclass method.
+         */
+        public void updateVisibleIDs(Map<String, Factory> result) {
+          Set<String> visibleIDs = ICUResourceBundle.getAvailableLocaleNameSet(bundleName, loader()); // only visible ids
+            for (String id : visibleIDs) {
+                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, loader());
+        }
+
+        protected ClassLoader loader() {
+            return getClass().getClassLoader();
+        }
+
+        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/main/classes/core/src/com/ibm/icu/impl/ICULogger.java b/main/classes/core/src/com/ibm/icu/impl/ICULogger.java
new file mode 100644
index 0000000..a5d3f86
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/ICULogger.java
@@ -0,0 +1,190 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.util.logging.ConsoleHandler;
+import java.util.logging.Logger;
+import java.util.logging.Level;
+
+/**
+ *
+ * Extends the Java Logger class adding a method to turn off/on logging.
+ * Classes where logging is wanted contains a static ICULogger object
+ * with logging turned off by default unless the system property 
+ * "icu4j.debug.logging" is set to "all"
+ * 
+ * If "icu4j.debug.logging" is not set to "all", then the individual loggers needs
+ * to be turned on manually. (e.g. TimeZone.TimeZoneLogger.turnLoggingOn())
+ * <p>
+ * To use logging, the system property "icu4j.debug.logging" must be set to "on" or "all",
+ * otherwise the static ICULogger object will be null. This will help lower any unneccessary
+ * resource usage when logging is not desired.
+ * <P>
+ * <strong>Examples</strong>:<P>
+ * Usage in code
+ * <blockquote>
+ * <pre>
+ * public class Class {
+ *     // Create logger object (usually with the class name)
+ *     public static ICULogger ClassLogger = ICULogger.getICULogger(Class.class.getName());
+ *     
+ *     // Method that will use logger.
+ *     public boolean hasSomething(Object obj) {
+ *         if (obj == null) {
+ *              // Log that obj is null.
+ *              // Note: Good to check for null and if logging is turned on to minimize resource usage when logging is not needed.
+ *              if (ClassLogger != null && ClassLogger.isLoggingOn()) {
+ *                  ClassLogger.warning("obj is null so false was returned by default.");
+ *              }
+ *             return false;
+ *         }
+ *         
+ *         ...
+ *         
+ *     }
+ * }
+ * </pre>
+ * </blockquote>
+ * Turning on logging (using the default settings)
+ * <blockquote>
+ * <pre>
+ * java -Dicu4j.debug.logging=all program
+ * </pre>
+ * </blockquote>
+ */
+
+public class ICULogger extends Logger {
+    private static enum LOGGER_STATUS { ON, OFF, NULL };
+    private static final String GLOBAL_FLAG_TURN_ON_LOGGING = "all";
+    private static final String SYSTEM_PROP_LOGGER = "icu4j.debug.logging";
+    
+    private LOGGER_STATUS currentStatus;
+    
+    /**
+     * ICULogger constructor that calls the parent constructor with the desired parameters.
+     */
+    private ICULogger(String name, String resourceBundleName) {
+        super(name, resourceBundleName);
+    }
+    
+    /**
+     * Set the status to either on or off. Set the level of the logger to INFO.
+     */
+    private void setStatus(LOGGER_STATUS newStatus) {
+        if (currentStatus != newStatus) {
+            /* Default to level INFO */
+            if (currentStatus == LOGGER_STATUS.OFF && newStatus == LOGGER_STATUS.ON) {
+                this.setLevel(Level.INFO);
+            }
+            
+            currentStatus = newStatus;
+            
+            if (currentStatus == LOGGER_STATUS.OFF){
+                this.setLevel(Level.OFF);
+            }
+        }
+    }
+    
+    /**
+     * Check the system property SYSTEM_PROP_LOGGER to see if it is set.
+     * return true if it is otherwise return false.
+     */
+    private static LOGGER_STATUS checkGlobalLoggingFlag() {
+        try {
+            String prop = System.getProperty(SYSTEM_PROP_LOGGER);
+
+            if (prop != null) {
+                if (prop.equals(GLOBAL_FLAG_TURN_ON_LOGGING)) {
+                    return LOGGER_STATUS.ON;
+                }
+                return LOGGER_STATUS.OFF;
+            }
+        } catch (SecurityException e) {
+            // Ignore the security exception and fall-through
+        }
+
+        return LOGGER_STATUS.NULL;
+    }
+    
+    /**
+     * Instantiates a new ICULogger object with logging turned off by default.
+     *
+     * @param name to be use by the logger (usually is the class name)
+     * @return a new ICULogger object
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ICULogger getICULogger(String name) {
+        return getICULogger(name, null);
+    }
+    
+    /**
+     * Instantiates a new ICULogger object with logging turned off by default
+     * unless the system property "icu4j.debug.logging" is set to "all"
+     *
+     * @param name to be use by the logger (usually is the class name)
+     * @param resourceBundleName name to localize messages (can be null)
+     * @return a new ICULogger object
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ICULogger getICULogger(String name, String resourceBundleName) {
+        LOGGER_STATUS flag = checkGlobalLoggingFlag();
+        if (flag != LOGGER_STATUS.NULL) {
+            ICULogger logger = new ICULogger(name, resourceBundleName);
+            
+            /* Add a default handler to logger*/
+            logger.addHandler(new ConsoleHandler());
+            
+            /* Turn off logging by default unless SYSTEM_PROP_LOGGER property is set to "all" */
+            if (flag == LOGGER_STATUS.ON) {
+                logger.turnOnLogging();
+            } else {
+                logger.turnOffLogging();
+            }
+            
+            return logger;
+        }
+        return null;
+    }
+    
+    /**
+     * Determined if logging is turned on or off. The return value is true if logging is on.
+     *
+     * @return whether logging is turned on or off.
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean isLoggingOn() {
+        if (currentStatus == LOGGER_STATUS.ON) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+    
+    /**
+     * Turn logging on.
+     *
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void turnOnLogging() {
+        setStatus(LOGGER_STATUS.ON);
+    }
+    
+    /**
+     * Turn logging off.
+     *
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void turnOffLogging() {
+        setStatus(LOGGER_STATUS.OFF);
+    }
+    
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/ICUNotifier.java b/main/classes/core/src/com/ibm/icu/impl/ICUNotifier.java
new file mode 100644
index 0000000..90c9206
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/ICUNotifier.java
@@ -0,0 +1,169 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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.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<EventListener> 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<EventListener>();
+                } else {
+                    // identity equality check
+                    for (EventListener ll : listeners) {
+                        if (ll == 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<EventListener> 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(new EventListener[listeners.size()]));
+                }
+            }
+        }
+    }
+
+    /**
+     * The notification thread.
+     */
+    private static class NotifyThread extends Thread {
+        private final ICUNotifier notifier;
+        private final List<EventListener[]> queue = new ArrayList<EventListener[]>();
+
+        NotifyThread(ICUNotifier notifier) {
+            this.notifier = notifier;
+        }
+
+        /**
+         * Queue the notification on the thread.
+         */
+        public void queue(EventListener[] 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() {
+            EventListener[] list;
+            while (true) {
+                try {
+                    synchronized (this) {
+                        while (queue.isEmpty()) {
+                            wait();
+                        }
+                        list = queue.remove(0);
+                    }
+
+                    for (int i = 0; i < list.length; ++i) {
+                        notifier.notifyListener(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/main/classes/core/src/com/ibm/icu/impl/ICURWLock.java b/main/classes/core/src/com/ibm/icu/impl/ICURWLock.java
new file mode 100644
index 0000000..ec15070
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundle.java b/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundle.java
new file mode 100644
index 0000000..fed200a
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundle.java
@@ -0,0 +1,1339 @@
+/*
+ * *****************************************************************************
+ * Copyright (C) 2005-2009, 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.List;
+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_PATH;
+
+    /**
+     * 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;
+
+    /**
+     * 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 the respath of the bundle
+     */
+    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,
+                                                        ClassLoader loader,
+            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, loader).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<String> keywords = new HashSet<String>();
+        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<String> e = irb.getKeys();
+                while (e.hasMoreElements()) {
+                    String s = e.nextElement();
+                    if (!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 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 If a resource was not found.
+     */
+    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<String> getAvailableLocaleNameSet(String bundlePrefix, ClassLoader loader) {
+        return getAvailEntry(bundlePrefix, loader).getLocaleNameSet();
+    }
+
+    /**
+     * Return a set of all the locale names supported by a collection of
+     * resource bundles.
+     */
+    public static Set<String> getFullLocaleNameSet() {
+        return getFullLocaleNameSet(ICU_BASE_NAME, ICU_DATA_CLASS_LOADER);
+    }
+
+    /**
+     * 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<String> getFullLocaleNameSet(String bundlePrefix, ClassLoader loader) {
+        return getAvailEntry(bundlePrefix, loader).getFullLocaleNameSet();
+    }
+
+    /**
+     * Return a set of the locale names supported by a collection of resource
+     * bundles.
+     */
+    public static Set<String> getAvailableLocaleNameSet() {
+        return getAvailableLocaleNameSet(ICU_BASE_NAME, ICU_DATA_CLASS_LOADER);
+    }
+
+    /**
+     * Get the set of Locales installed in the specified bundles.
+     * @return the list of available locales
+     */
+    public static final ULocale[] getAvailableULocales(String baseName, ClassLoader loader) {
+        return getAvailEntry(baseName, loader).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, ICU_DATA_CLASS_LOADER);
+    }
+
+    /**
+     * Get the set of Locales installed in the specified bundles.
+     * @return the list of available locales
+     */
+    public static final Locale[] getAvailableLocales(String baseName, ClassLoader loader) {
+        return getAvailEntry(baseName, loader).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, ICU_DATA_CLASS_LOADER).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<Locale> list = new ArrayList<Locale>(ulocales.length);
+        HashSet<Locale> uniqueSet = new HashSet<Locale>();
+        for (int i = 0; i < ulocales.length; i++) {
+            Locale loc = ulocales[i].toLocale();
+            if (!uniqueSet.contains(loc)) {
+                list.add(loc);
+                uniqueSet.add(loc);
+            }
+        }
+        return 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<Map<String, AvailEntry>> 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, ClassLoader loader) {
+        ULocale[] ulocales = getAvailEntry(baseName, loader).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 List<String> createFullLocaleNameArray(
+            final String baseName, final ClassLoader root) {
+
+        List<String> list = java.security.AccessController
+            .doPrivileged(new java.security.PrivilegedAction<List<String>>() {
+                public List<String> 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) {
+                            List<String> lst = new ArrayList<String>();
+                            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
+                    }
+
+                    try {
+                        Enumeration<URL> urls = root.getResources(bn);
+                        final List<String> lst = new ArrayList<String>();
+                        while (urls.hasMoreElements()) {
+                            URL url = urls.nextElement();
+                            URLHandler handler = URLHandler.get(url);
+                            if (handler != null) {
+                                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);
+                            } else {
+                                System.out.println("handler for " + url + " is null");
+                            }
+                        }
+                        return lst;
+                    } catch (IOException e) {
+                        System.out.println("ouch: " + e.getMessage());
+                    }
+
+                    return null;
+                }
+            });
+
+        return list;
+    }
+
+    private static Set<String> createFullLocaleNameSet(String baseName, ClassLoader loader) {
+        List<String> list = createFullLocaleNameArray(baseName, loader);
+        HashSet<String> set = new HashSet<String>();
+        if(list == null){
+            throw new MissingResourceException("Could not find "+  ICU_RESOURCE_INDEX, "", "");
+        }
+        set.addAll(list);
+        return Collections.unmodifiableSet(set);
+    }
+
+    private static Set<String> createLocaleNameSet(String baseName, ClassLoader loader) {
+        try {
+            String[] locales = createLocaleNameArray(baseName, loader);
+
+            HashSet<String> set = new HashSet<String>();
+            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.emptySet();
+    }
+
+    /**
+     * 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 ClassLoader loader;
+        private ULocale[] ulocales;
+        private Locale[] locales;
+        private Set<String> nameSet;
+        private Set<String> fullNameSet;
+
+        AvailEntry(String prefix, ClassLoader loader) {
+            this.prefix = prefix;
+            this.loader = loader;
+        }
+
+        ULocale[] getULocaleList() {
+            if (ulocales == null) {
+                ulocales = createULocaleList(prefix, loader);
+            }
+            return ulocales;
+        }
+        Locale[] getLocaleList() {
+            if (locales == null) {
+              locales = createLocaleList(prefix, loader);
+            }
+            return locales;
+        }
+        Set<String> getLocaleNameSet() {
+            if (nameSet == null) {
+              nameSet = createLocaleNameSet(prefix, loader);
+            }
+            return nameSet;
+        }
+        Set<String> getFullLocaleNameSet() {
+            if (fullNameSet == null) {
+              fullNameSet = createFullLocaleNameSet(prefix, loader);
+            }
+            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, ClassLoader loader) {
+        AvailEntry ae = null;
+        Map<String, AvailEntry> lcache = null;
+        if (GET_AVAILABLE_CACHE != null) {
+            lcache = GET_AVAILABLE_CACHE.get();
+            if (lcache != null) {
+                ae = lcache.get(key);
+            }
+        }
+
+        if (ae == null) {
+          ae = new AvailEntry(key, loader);
+            if (lcache == null) {
+                lcache = new HashMap<String, AvailEntry>();
+                lcache.put(key, ae);
+                GET_AVAILABLE_CACHE = new SoftReference<Map<String, AvailEntry>>(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 (this == other) {
+            return true;
+        }
+        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 = 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 = defaultLocale.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())){
+                // no fallback because the caller said so or because the bundle says so
+                return addToCache(root, fullName, defaultLocale, 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('_');
+
+                b = (ICUResourceBundle)addToCache(root, fullName, defaultLocale, b);
+
+                boolean ParentIsRoot = false;
+                if (b.getTableResource("%%ParentIsRoot") != RES_BOGUS) {
+                    ParentIsRoot = true;
+                }
+
+                if (i != -1 && !ParentIsRoot) {
+                    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<String, String> 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 = getFullName(getBaseName(), getLocaleID());
+                throw new MissingResourceException(
+                        "Can't find resource for bundle " + fullName + ", key "
+                                + aKey, this.getClass().getName(), aKey);
+            }
+        }
+        obj.setLoadingStatus(((ICUResourceBundle)requested).getLocaleID());
+        return obj;
+    }
+
+    private static final String ICU_RESOURCE_SUFFIX = ".res";
+    /**
+     * 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 localeName=ULocale.getDefault().toString();   
+            }
+            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;
+                }
+            }
+        }
+    }
+
+    protected String localeID;
+    protected String baseName;
+    protected ULocale ulocale;
+    protected ClassLoader loader;
+
+    /**
+     * Access to the bits and bytes of the resource bundle.
+     * Hides low-level details.
+     */
+    protected ICUResourceBundleReader reader;
+    /** Data member where the subclasses store the key. */
+    protected String key;
+    /** Data member where the subclasses store the offset within resource data. */
+    protected int resource;
+
+    /**
+     * A resource word value that means "no resource".
+     * Note: 0xffffffff == -1
+     * This has the same value as UResourceBundle.NONE, but they are semantically
+     * different and should be used appropriately according to context:
+     * NONE means "no type".
+     * (The type of RES_BOGUS is RES_RESERVED=15 which was defined in ICU4C ures.h.)
+     */
+    public static final int RES_BOGUS = 0xffffffff;
+
+    /**
+     * 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.
+     */
+    public static final int ALIAS = 3;
+
+    /** Resource type constant for tables with 32-bit count, key offsets and values. */
+    public static final int TABLE32 = 4;
+
+    /**
+     * Resource type constant for tables with 16-bit count, key offsets and values.
+     * All values are STRING_V2 strings.
+     */
+    public static final int TABLE16 = 5;
+
+    /** Resource type constant for 16-bit Unicode strings in formatVersion 2. */
+    public static final int STRING_V2 = 6;
+
+    /**
+     * Resource type constant for arrays with 16-bit count and values.
+     * All values are STRING_V2 strings.
+     */
+    public static final int ARRAY16 = 9;
+
+    /**
+     *
+     * @param baseName The name for the bundle.
+     * @param localeID The locale identification.
+     * @param root The ClassLoader object root.
+     * @return the new bundle
+     */
+    public static ICUResourceBundle createBundle(String baseName,
+            String localeID, ClassLoader root) {
+        String resolvedName = getFullName(baseName, localeID);
+        ICUResourceBundleReader reader = ICUResourceBundleReader.getReader(resolvedName, 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;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    private static final int[] gPublicTypes = new int[] {
+        STRING,
+        BINARY,
+        TABLE,
+        ALIAS,
+
+        TABLE,      /* TABLE32 */
+        TABLE,      /* TABLE16 */
+        STRING,     /* STRING_V2 */
+        INT,
+
+        ARRAY,
+        ARRAY,      /* ARRAY16 */
+        NONE,
+        NONE,
+
+        NONE,
+        NONE,
+        INT_VECTOR,
+        NONE
+    };
+
+    public int getType() {
+        return gPublicTypes[ICUResourceBundleReader.RES_GET_TYPE(resource)];
+    }
+
+    /**
+     * Get the noFallback flag specified in the loaded bundle.
+     * @return The noFallback flag.
+     */
+    private boolean getNoFallback() {
+        return reader.getNoFallback();
+    }
+
+    private static ICUResourceBundle getBundle(ICUResourceBundleReader reader,
+                                               String baseName, String localeID,
+                                               ClassLoader loader) {
+        ICUResourceBundleImpl bundle;
+        int rootRes = reader.getRootResource();
+        if(gPublicTypes[ICUResourceBundleReader.RES_GET_TYPE(rootRes)] == TABLE) {
+            bundle = new ICUResourceBundleImpl.ResourceTable(reader, null, "", rootRes, null);
+        } else {
+            throw new IllegalStateException("Invalid format error");
+        }
+        bundle.baseName = baseName;
+        bundle.localeID = localeID;
+        bundle.ulocale = new ULocale(localeID);
+        bundle.loader = loader;
+        if(bundle.reader.getUsesPoolBundle()) {
+            bundle.reader.setPoolBundleKeys(
+                ((ICUResourceBundleImpl)getBundleInstance(baseName, "pool", loader, true)).reader);
+        }
+        UResourceBundle alias = bundle.handleGetImpl("%%ALIAS", null, bundle, null, null); // handleGet will cache the bundle with no parent set
+        if(alias != null) {
+            return (ICUResourceBundle)UResourceBundle.getBundleInstance(baseName, alias.getString());
+        } else {
+            return bundle;
+        }
+    }
+    // constructor for inner classes
+    protected ICUResourceBundle(ICUResourceBundleReader reader, String key, String resPath, int resource,
+                                ICUResourceBundle container) {
+        this.reader = reader;
+        this.key = key;
+        this.resPath = resPath;
+        this.resource = resource;
+        if(container != null) {
+            baseName = container.baseName;
+            localeID = container.localeID;
+            ulocale = container.ulocale;
+            loader = container.loader;
+            this.parent = container.parent;
+        }
+    }
+
+    private String getAliasValue(int res) {
+        String result = reader.getAlias(res);
+        return result != null ? result : "";
+    }
+    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 ICUResourceBundle findResource(String _key, int _resource,
+                                             HashMap<String, String> table,
+                                             UResourceBundle requested) {
+        ClassLoader loaderToUse = loader;
+        String locale = null, keyPath = null;
+        String bundleName;
+        String rpath = getAliasValue(_resource);
+        if (table == null) {
+            table = new HashMap<String, String>();
+        }
+        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);
+            if (j < 0) {
+                locale = rpath.substring(i + 1);
+            } else {
+                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);
+            if (sub != 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)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);
+            }
+            if (sub != null) {
+                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<Object, UResourceBundle> lookup;
+    private static final int MAX_INITIAL_LOOKUP_SIZE = 64;
+
+    protected void createLookupCache() {
+        lookup = new SimpleCache<Object, UResourceBundle>(ICUCache.WEAK, Math.max(getSize()*2, MAX_INITIAL_LOOKUP_SIZE));
+    }
+
+    protected UResourceBundle handleGet(String resKey, HashMap<String, String> table, UResourceBundle requested) {
+        UResourceBundle res = null;
+        if (lookup != null) {
+            res = 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(Integer.valueOf(index[0]), res);
+            }
+        }
+        return res;
+    }
+
+    protected UResourceBundle handleGet(int index, HashMap<String, String> table, UResourceBundle requested) {
+        UResourceBundle res = null;
+        Integer indexKey = null;
+        if (lookup != null) {
+            indexKey = Integer.valueOf(index);
+            res = 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<String, String> 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<String, String> 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 key within the calling resource table.
+     * 
+     * @internal
+     * @deprecated This API is ICU internal only and a workaround see ticket #6514.
+     * @author Brian Rower
+     */
+    protected int getTableResource(String resKey) {
+        return RES_BOGUS;
+    }
+    protected int getTableResource(int index) {
+        return RES_BOGUS;
+    }
+
+    /**
+     * 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.
+        return ICUResourceBundleReader.RES_GET_TYPE(getTableResource(index)) == ALIAS;
+    }
+
+    /**
+     * 
+     * @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 ICUResourceBundleReader.RES_GET_TYPE(resource) == ALIAS;
+    }
+
+    /**
+     * Determines if the object with the specified key 
+     * is an alias. If it is, returns true
+     * 
+     * @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
+        return ICUResourceBundleReader.RES_GET_TYPE(getTableResource(k)) == ALIAS;
+    }
+
+    /**
+     * 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 The index where the alias path points to.
+     * @return The alias path.
+     * @author Brian Rower
+     * @internal
+     * @deprecated This API is ICU internal only.
+     * @author Brian Rower
+     */
+    public String getAliasPath(int index)
+    {
+        return getAliasValue(getTableResource(index));
+    }
+
+    /**
+     * 
+     * @internal
+     * @deprecated This API is ICU internal only
+     * @author Brian Rower
+     */
+    public String getAliasPath()
+    {
+        //TODO cannot allow alias path to end up in public API
+        return getAliasValue(resource);
+    }
+
+    /**
+     * 
+     * @internal
+     * @deprecated This API is ICU internal only
+     * @author Brian Rower
+     */
+    public String getAliasPath(String k)
+    {
+        //TODO cannot allow alias path to end up in public API
+        return getAliasValue(getTableResource(k));
+    }
+    
+    /*
+     * Helper method for getKeysSafe
+     */
+    protected String getKey(int index) {
+        return null;
+    }
+
+    /**
+     * 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<String> 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(!ICUResourceBundleReader.URES_IS_TABLE(resource))
+        {
+            return getKeys();
+        }
+        Vector<String> v = new Vector<String>();
+        int size = getSize();
+        for(int index = 0; index < size; index++)
+        {
+            String curKey = getKey(index); 
+            v.add(curKey);
+        }
+        return v.elements();
+    }
+
+    // This is the worker function for the public getKeys().
+    // TODO: Now that UResourceBundle uses handleKeySet(), this function is obsolete.
+    // It is also not inherited from ResourceBundle, and it is not implemented
+    // by ResourceBundleWrapper despite its documentation requiring all subclasses to
+    // implement it.
+    // Consider deprecating UResourceBundle.handleGetKeys(), and consider making it always return null.
+    protected Enumeration<String> handleGetKeys() {
+        return Collections.enumeration(handleKeySet());
+    }
+
+    protected boolean isTopLevelResource() {
+        return resPath.length() == 0;
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundleImpl.java b/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundleImpl.java
new file mode 100644
index 0000000..fe40d43
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundleImpl.java
@@ -0,0 +1,213 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.nio.ByteBuffer;
+import java.util.HashMap;
+import java.util.Set;
+import java.util.TreeSet;
+
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.UResourceBundleIterator;
+import com.ibm.icu.util.UResourceTypeMismatchException;
+
+class ICUResourceBundleImpl extends ICUResourceBundle {
+    protected ICUResourceBundleImpl(ICUResourceBundleReader reader, String key, String resPath, int resource,
+                                    ICUResourceBundleImpl container) {
+        super(reader, key, resPath, resource, container);
+    }
+    protected final ICUResourceBundle createBundleObject(String _key,
+                                                         int _resource,
+                                                         HashMap<String, String> table,
+                                                         UResourceBundle requested,
+                                                         boolean[] isAlias) {
+        if (isAlias != null) {
+            isAlias[0] = false;
+        }
+        String _resPath = resPath + "/" + _key;
+        switch(ICUResourceBundleReader.RES_GET_TYPE(_resource)) {
+        case STRING :
+        case STRING_V2:
+            return new ICUResourceBundleImpl.ResourceString(reader, _key, _resPath, _resource, this);
+        case BINARY:
+            return new ICUResourceBundleImpl.ResourceBinary(reader, _key, _resPath, _resource, this);
+        case ALIAS:
+            if (isAlias != null) {
+                isAlias[0] = true;
+            }
+            return findResource(_key, _resource, table, requested);
+        case INT:
+            return new ICUResourceBundleImpl.ResourceInt(reader, _key, _resPath, _resource, this);
+        case INT_VECTOR:
+            return new ICUResourceBundleImpl.ResourceIntVector(reader, _key, _resPath, _resource, this);
+        case ARRAY:
+        case ARRAY16:
+            return new ICUResourceBundleImpl.ResourceArray(reader, _key, _resPath, _resource, this);
+        case TABLE:
+        case TABLE16:
+        case TABLE32:
+            return new ICUResourceBundleImpl.ResourceTable(reader, _key, _resPath, _resource, this);
+        default :
+            throw new IllegalStateException("The resource type is unknown");
+        }
+    }
+
+    // Scalar values ------------------------------------------------------- ***
+
+    private static final class ResourceBinary extends ICUResourceBundleImpl {
+        public ByteBuffer getBinary() {
+            return reader.getBinary(resource);
+        }
+        public byte [] getBinary(byte []ba) {
+            return reader.getBinary(resource, ba);
+        }
+        ResourceBinary(ICUResourceBundleReader reader, String key, String resPath, int resource,
+                       ICUResourceBundleImpl container) {
+            super(reader, key, resPath, resource, container);
+        }
+    }
+    private static final class ResourceInt extends ICUResourceBundleImpl {
+        public int getInt() {
+            return ICUResourceBundleReader.RES_GET_INT(resource);
+        }
+        public int getUInt() {
+            return ICUResourceBundleReader.RES_GET_UINT(resource);
+        }
+        ResourceInt(ICUResourceBundleReader reader, String key, String resPath, int resource,
+                    ICUResourceBundleImpl container) {
+            super(reader, key, resPath, resource, container);
+        }
+    }
+    private static final class ResourceString extends ICUResourceBundleImpl {
+        private String value;
+        public String getString() {
+            return value;
+        }
+        ResourceString(ICUResourceBundleReader reader, String key, String resPath, int resource,
+                       ICUResourceBundleImpl container) {
+            super(reader, key, resPath, resource, container);
+            value = reader.getString(resource);
+        }
+    }
+    private static final class ResourceIntVector extends ICUResourceBundleImpl {
+        private int[] value;
+        public int[] getIntVector() {
+            return value;
+        }
+        ResourceIntVector(ICUResourceBundleReader reader, String key, String resPath, int resource,
+                          ICUResourceBundleImpl container) {
+            super(reader, key, resPath, resource, container);
+            value = reader.getIntVector(resource);
+        }
+    }
+
+    // Container values ---------------------------------------------------- ***
+
+    private static class ResourceContainer extends ICUResourceBundleImpl {
+        protected ICUResourceBundleReader.Container value;
+
+        public int getSize() {
+            return value.getSize();
+        }
+        protected int getContainerResource(int index) {
+            return value.getContainerResource(index);
+        }
+        protected UResourceBundle createBundleObject(int index, String resKey, HashMap<String, String> table,
+                                                     UResourceBundle requested, boolean[] isAlias) {
+            int item = getContainerResource(index);
+            if (item == RES_BOGUS) {
+                throw new IndexOutOfBoundsException();
+            }
+            return createBundleObject(resKey, item, table, requested, isAlias);
+        }
+        ResourceContainer(ICUResourceBundleReader reader, String key, String resPath, int resource,
+                          ICUResourceBundleImpl container) {
+            super(reader, key, resPath, resource, container);
+        }
+    }
+    private static class ResourceArray extends ResourceContainer {
+        protected String[] handleGetStringArray() {
+            String[] strings = new String[value.getSize()];
+            UResourceBundleIterator iter = getIterator();
+            int i = 0;
+            while (iter.hasNext()) {
+                strings[i++] = iter.next().getString();
+            }
+            return strings;
+        }
+        public String[] getStringArray() {
+            return handleGetStringArray();
+        }
+        protected UResourceBundle handleGetImpl(String indexStr, HashMap<String, String> table,
+                                                UResourceBundle requested,
+                                                int[] index, boolean[] isAlias) {
+            int i = indexStr.length() > 0 ? Integer.valueOf(indexStr).intValue() : -1;
+            if(index != null) {
+                index[0] = i;
+            }
+            if (i < 0) {
+                throw new UResourceTypeMismatchException("Could not get the correct value for index: "+ index);
+            }
+            return createBundleObject(i, indexStr, table, requested, isAlias);
+        }
+        protected UResourceBundle handleGetImpl(int index, HashMap<String, String> table,
+                                                UResourceBundle requested, boolean[] isAlias) {
+            return createBundleObject(index, Integer.toString(index), table, requested, isAlias);
+        }
+        ResourceArray(ICUResourceBundleReader reader, String key, String resPath, int resource,
+                      ICUResourceBundleImpl container) {
+            super(reader, key, resPath, resource, container);
+            value = reader.getArray(resource);
+            createLookupCache(); // Use bundle cache to access array entries
+        }
+    }
+    static class ResourceTable extends ResourceContainer {
+        protected String getKey(int index) {
+            return ((ICUResourceBundleReader.Table)value).getKey(index);
+        }
+        protected Set<String> handleKeySet() {
+            TreeSet<String> keySet = new TreeSet<String>();
+            ICUResourceBundleReader.Table table = (ICUResourceBundleReader.Table)value;
+            for (int i = 0; i < table.getSize(); ++i) {
+                keySet.add(table.getKey(i));
+            }
+            return keySet;
+        }
+        protected int getTableResource(String resKey) {
+            return ((ICUResourceBundleReader.Table)value).getTableResource(resKey);
+        }
+        protected int getTableResource(int index) {
+            return getContainerResource(index);
+        }
+        protected UResourceBundle handleGetImpl(String resKey, HashMap<String, String> table,
+                                                UResourceBundle requested,
+                                                int[] index, boolean[] isAlias) {
+            int i = ((ICUResourceBundleReader.Table)value).findTableItem(resKey);
+            if(index != null) {
+                index[0] = i;
+            }
+            if (i < 0) {
+                return null;
+            }
+            return createBundleObject(i, resKey, table, requested, isAlias);
+        }
+        protected UResourceBundle handleGetImpl(int index, HashMap<String, String> table,
+                                                UResourceBundle requested, boolean[] isAlias) {
+            String itemKey = ((ICUResourceBundleReader.Table)value).getKey(index);
+            if (itemKey == null) {
+                throw new IndexOutOfBoundsException();
+            }
+            return createBundleObject(index, itemKey, table, requested, isAlias);
+        }
+        ResourceTable(ICUResourceBundleReader reader, String key, String resPath, int resource,
+                      ICUResourceBundleImpl container) {
+            super(reader, key, resPath, resource, container);
+            value = reader.getTable(resource);
+            createLookupCache(); // Use bundle cache to access table entries
+        }
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundleReader.java b/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundleReader.java
new file mode 100644
index 0000000..69e39fc
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundleReader.java
@@ -0,0 +1,857 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2009, 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 java.nio.ByteBuffer;
+
+import com.ibm.icu.util.UResourceBundle;  // For resource type constants.
+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=2, ICU 4.4)
+ *
+ * New in formatVersion 2 compared with 1.3: -------------
+ *
+ * Three new resource types -- String-v2, Table16 and Array16 -- have their
+ * values stored in a new array of 16-bit units between the table key strings
+ * and the start of the other resources.
+ *
+ * genrb eliminates duplicates among Unicode string-v2 values.
+ * Multiple Unicode strings may use the same offset and string data,
+ * or a short string may point to the suffix of a longer string. ("Suffix sharing")
+ * For example, one string "abc" may be reused for another string "bc" by pointing
+ * to the second character. (Short strings-v2 are NUL-terminated
+ * and not preceded by an explicit length value.)
+ *
+ * It is allowed for all resource types to share values.
+ * The swapper code (ures_swap()) has been modified so that it swaps each item
+ * exactly once.
+ *
+ * A resource bundle may use a special pool bundle. Some or all of the table key strings
+ * of the using-bundle are omitted, and the key string offsets for such key strings refer
+ * to offsets in the pool bundle.
+ * The using-bundle's and the pool-bundle's indexes[URES_INDEX_POOL_CHECKSUM] values
+ * must match.
+ * Two bits in indexes[URES_INDEX_ATTRIBUTES] indicate whether a resource bundle
+ * is or uses a pool bundle.
+ *
+ * Table key strings must be compared in ASCII order, even if they are not
+ * stored in ASCII.
+ *
+ * New in formatVersion 1.3 compared with 1.2: -------------
+ *
+ * genrb eliminates duplicates among key strings.
+ * Multiple table items may share one key string, or one item may point
+ * to the suffix of another's key string. ("Suffix sharing")
+ * For example, one key "abc" may be reused for another key "bc" by pointing
+ * to the second character. (Key strings are NUL-terminated.)
+ *
+ * -------------
+ *
+ * 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
+ *   uint16_t 16BitUnits[]; -- resources that are stored entirely as sequences of 16-bit units
+ *                             (new in formatVersion 2/ICU 4.4)
+ *                             data is indexed by the offset values in 16-bit resource types,
+ *                             with offset 0 pointing to the beginning of this array;
+ *                             there is a 0 at offset 0, for empty resources;
+ *                             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.
+ *
+ * 16-bit-unit values:
+ * Starting with formatVersion 2/ICU 4.4, some resources are stored in a special
+ * array of 16-bit units. Each resource value is a sequence of 16-bit units,
+ * with no per-resource padding to a 4-byte boundary.
+ * 16-bit container types (Table16 and Array16) contain Resource16 values
+ * which are offsets to String-v2 resources in the same 16-bit-units array.
+ *
+ * Direct values:
+ * - Empty Unicode strings have an offset value of 0 in the Resource handle itself.
+ * - Starting with formatVersion 2/ICU 4.4, an offset value of 0 for
+ *   _any_ resource type indicates an empty value.
+ * - 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.
+ *
+ * New in formatVersion 2/ICU 4.4: Some types use offsets into the 16-bit-units array,
+ * indexing 16-bit units in that array.
+ *
+ * The structures (memory layouts) for the values for each item type are listed
+ * in the table below.
+ *
+ * Nested, hierarchical structures: -------------
+ *
+ * Table items contain key-value pairs where the keys are offsets to char * key strings.
+ * The values of these pairs are either Resource handles or
+ * offsets into the 16-bit-units array, depending on the table type.
+ *
+ * Array items are simple vectors of Resource handles,
+ * or of offsets into the 16-bit-units array, depending on the array type.
+ *
+ * Table key string offsets: -------
+ *
+ * Key string offsets are relative to the start of the resource data (of the root handle),
+ * i.e., the first string has an offset of 4+sizeof(indexes).
+ * (After the 4-byte root handle and after the indexes array.)
+ *
+ * If the resource bundle uses a pool bundle, then some key strings are stored
+ * in the pool bundle rather than in the local bundle itself.
+ * - In a Table or Table16, the 16-bit key string offset is local if it is
+ *   less than indexes[URES_INDEX_KEYS_TOP]<<2.
+ *   Otherwise, subtract indexes[URES_INDEX_KEYS_TOP]<<2 to get the offset into
+ *   the pool bundle key strings.
+ * - In a Table32, the 32-bit key string offset is local if it is non-negative.
+ *   Otherwise, reset bit 31 to get the pool key string offset.
+ *
+ * Unlike the local offset, the pool key offset is relative to
+ * the start of the key strings, not to the start of the bundle.
+ *
+ * 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.
+ *
+ * Some resources have their values stored as sequences of 16-bit units,
+ * at 2-byte offsets from the start of a contiguous 16-bit-unit array between
+ * the table key strings and the other resources. (new in formatVersion 2/ICU 4.4)
+ * At offset 0 of that array is a 16-bit zero value for empty 16-bit resources.
+ * Resource16 values in Table16 and Array16 are 16-bit offsets to String-v2
+ * resources, with the offsets relative to the start of the 16-bit-units array.
+ *
+ * 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)
+ *                      - the start of the bytes is 16-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)
+ * 5  Table16:          uint16_t count, uint16_t keyStringOffsets[count], Resource16[count]
+ *                      (stored in the 16-bit-units array; new in formatVersion 2/ICU 4.4)
+ * 6  Unicode String-v2:UChar[length], (UChar)0; length determined by the first UChar:
+ *                      - if first is not a trail surrogate, then the length is implicit
+ *                        and u_strlen() needs to be called
+ *                      - if first<0xdfef then length=first&0x3ff (and skip first)
+ *                      - if first<0xdfff then length=((first-0xdfef)<<16) | second UChar
+ *                      - if first==0xdfff then length=((second UChar)<<16) | third UChar
+ *                      (stored in the 16-bit-units array; new in formatVersion 2/ICU 4.4)
+ * 7  Integer:          (28-bit offset is integer value)
+ * 8  Array:            int32_t count, Resource[count]
+ * 9  Array16:          uint16_t count, Resource16[count]
+ *                      (stored in the 16-bit-units array; new in formatVersion 2/ICU 4.4)
+ * 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 or Unicode String-v2
+ *                     (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};
+
+    /* indexes[] value names; indexes are generally 32-bit (Resource) indexes */
+    private static final int URES_INDEX_LENGTH           = 0;   /* contains URES_INDEX_TOP==the length of indexes[];
+                                                                 * formatVersion==1: all bits contain the length of indexes[]
+                                                                 *   but the length is much less than 0xff;
+                                                                 * formatVersion>1:
+                                                                 *   only bits  7..0 contain the length of indexes[],
+                                                                 *        bits 31..8 are reserved and set to 0 */
+    private static final int URES_INDEX_KEYS_TOP         = 1;   /* contains the top of the key strings, */
+                                                                /* same as the bottom of resources or UTF-16 strings, rounded up */
+    //ivate static final int URES_INDEX_RESOURCES_TOP    = 2;   /* contains the top of all resources */
+    private static final int URES_INDEX_BUNDLE_TOP       = 3;   /* contains the top of the bundle, */
+                                                                /* in case it were ever different from [2] */
+    //ivate static final int URES_INDEX_MAX_TABLE_LENGTH = 4;   /* max. length of any table */
+    private static final int URES_INDEX_ATTRIBUTES       = 5;   /* attributes bit set, see URES_ATT_* (new in formatVersion 1.2) */
+    private static final int URES_INDEX_16BIT_TOP        = 6;   /* top of the 16-bit units (UTF-16 string v2 UChars, URES_TABLE16, URES_ARRAY16),
+                                                                 * rounded up (new in formatVersion 2.0, ICU 4.4) */
+    private static final int URES_INDEX_POOL_CHECKSUM    = 7;   /* checksum of the pool bundle (new in formatVersion 2.0, ICU 4.4) */
+    //ivate static final int URES_INDEX_TOP              = 8;
+
+    /*
+     * 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;
+
+    /*
+     * Attributes for bundles that are, or use, a pool bundle.
+     * A pool bundle provides key strings that are shared among several other bundles
+     * to reduce their total size.
+     * New in formatVersion 2 (ICU 4.4).
+     */
+    private static final int URES_ATT_IS_POOL_BUNDLE = 2;
+    private static final int URES_ATT_USES_POOL_BUNDLE = 4;
+
+    private static final boolean DEBUG = false;
+    
+    private byte[] /* formatVersion, */ dataVersion;
+
+    // See the ResourceData struct in ICU4C/source/common/uresdata.h.
+    private String s16BitUnits;
+    private byte[] poolBundleKeys;
+    private String poolBundleKeysAsString;
+    private int rootRes;
+    private int localKeyLimit;
+    private boolean noFallback; /* see URES_ATT_NO_FALLBACK */
+    private boolean isPoolBundle;
+    private boolean usesPoolBundle;
+
+    // Fields specific to the Java port.
+    private int[] indexes;
+    private byte[] keyStrings;
+    private String keyStringsAsString;  // null except if isPoolBundle
+    private byte[] resourceBytes;
+    private int resourceBottom;  // File offset where the mixed-type resources start.
+
+    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());   
+        }
+    }
+    static ICUResourceBundleReader getReader(String resolvedName, ClassLoader root) {
+        InputStream stream = ICUData.getStream(root,resolvedName);
+        
+        if(stream==null){
+            return null;
+        }
+        ICUResourceBundleReader reader = new ICUResourceBundleReader(stream, resolvedName);
+        return reader;
+    }
+    
+    void setPoolBundleKeys(ICUResourceBundleReader poolBundleReader) {
+        if(!poolBundleReader.isPoolBundle) {
+            throw new IllegalStateException("pool.res is not a pool bundle");
+        }
+        if(poolBundleReader.indexes[URES_INDEX_POOL_CHECKSUM] != indexes[URES_INDEX_POOL_CHECKSUM]) {
+            throw new IllegalStateException("pool.res has a different checksum than this bundle");
+        }
+        poolBundleKeys = poolBundleReader.keyStrings;
+        poolBundleKeysAsString = poolBundleReader.keyStringsAsString;
+    }
+
+    // See res_init() in ICU4C/source/common/uresdata.c.
+    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());
+
+        rootRes = ds.readInt();
+
+        // read the variable-length indexes[] array
+        int indexes0 = ds.readInt();
+        int indexLength = indexes0 & 0xff;
+        indexes = new int[indexLength];
+        indexes[URES_INDEX_LENGTH] = indexes0;
+        for(int i=1; i<indexLength; i++){
+            indexes[i] = ds.readInt();   
+        }
+        resourceBottom = (1 + indexLength) << 2;
+
+        if(indexLength > URES_INDEX_ATTRIBUTES) {
+            // determine if this resource bundle falls back to a parent bundle
+            // along normal locale ID fallback
+            int att = indexes[URES_INDEX_ATTRIBUTES];
+            noFallback = (att & URES_ATT_NO_FALLBACK) != 0;
+            isPoolBundle = (att & URES_ATT_IS_POOL_BUNDLE) != 0;
+            usesPoolBundle = (att & URES_ATT_USES_POOL_BUNDLE) != 0;
+        }
+
+        int length = indexes[URES_INDEX_BUNDLE_TOP]*4;
+        if(DEBUG) System.out.println("The number of bytes in the bundle: "+length);
+
+        // Read the local key strings.
+        // The keyStrings include NUL characters corresponding to the bytes
+        // up to the end of the indexes.
+        if(indexes[URES_INDEX_KEYS_TOP] > (1 + indexLength)) {
+            int keysBottom = (1 + indexLength) << 2;
+            int keysTop = indexes[URES_INDEX_KEYS_TOP] << 2;
+            resourceBottom = keysTop;
+            if(isPoolBundle) {
+                // Shift the key strings down:
+                // Pool bundle key strings are used with a 0-based index,
+                // unlike regular bundles' key strings for which indexes
+                // are based on the start of the bundle data.
+                keysTop -= keysBottom;
+                keysBottom = 0;
+            } else {
+                localKeyLimit = keysTop;
+            }
+            keyStrings = new byte[keysTop];
+            ds.readFully(keyStrings, keysBottom, keysTop - keysBottom);
+            if(isPoolBundle) {
+                // Overwrite trailing padding bytes so that the conversion works.
+                while(keysBottom < keysTop && keyStrings[keysTop - 1] == (byte)0xaa) {
+                    keyStrings[--keysTop] = 0;
+                }
+                keyStringsAsString = new String(keyStrings, "US-ASCII");
+            }
+        }
+
+        // Read the array of 16-bit units.
+        // We are not using
+        //   new String(keys, "UTF-16BE")
+        // because the 16-bit units may not be well-formed Unicode.
+        if( indexLength > URES_INDEX_16BIT_TOP &&
+            indexes[URES_INDEX_16BIT_TOP] > indexes[URES_INDEX_KEYS_TOP]
+        ) {
+            int num16BitUnits = (indexes[URES_INDEX_16BIT_TOP] -
+                                 indexes[URES_INDEX_KEYS_TOP]) * 2;
+            char[] c16BitUnits = new char[num16BitUnits];
+            for(int i = 0; i < num16BitUnits; ++i) {
+                c16BitUnits[i] = ds.readChar();
+            }
+            s16BitUnits = new String(c16BitUnits);
+            resourceBottom = indexes[URES_INDEX_16BIT_TOP] << 2;
+        } else {
+            s16BitUnits = "\0";
+        }
+
+        // Read the block of bytes for the mixed-type resources.
+        resourceBytes = new byte[length - resourceBottom];
+        ds.readFully(resourceBytes);
+    }
+
+    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) || version[0] == 2);
+    }
+    
+    int getRootResource() {
+        return rootRes;
+    }
+    boolean getNoFallback() {
+        return noFallback;
+    }
+    boolean getUsesPoolBundle() {
+        return usesPoolBundle;
+    }
+
+    static int RES_GET_TYPE(int res) {
+        return res >>> 28;
+    }
+    private static int RES_GET_OFFSET(int res) {
+        return res & 0x0fffffff;
+    }
+    private int getResourceByteOffset(int offset) {
+        return (offset << 2) - resourceBottom;
+    }
+    /* get signed and unsigned integer values directly from the Resource handle */
+    static int RES_GET_INT(int res) {
+        return (res << 4) >> 4;
+    }
+    static int RES_GET_UINT(int res) {
+        return res & 0x0fffffff;
+    }
+    static boolean URES_IS_TABLE(int type) {
+        return type==UResourceBundle.TABLE || type==ICUResourceBundle.TABLE16 || type==ICUResourceBundle.TABLE32;
+    }
+
+    private static byte[] emptyBytes = new byte[0];
+    private static ByteBuffer emptyByteBuffer = ByteBuffer.allocate(0).asReadOnlyBuffer();
+    private static char[] emptyChars = new char[0];
+    private static int[] emptyInts = new int[0];
+    private static String emptyString = "";
+
+    private char getChar(int offset) {
+        return (char)((resourceBytes[offset] << 8) | (resourceBytes[offset + 1] & 0xff));
+    }
+    private char[] getChars(int offset, int count) {
+        char[] chars = new char[count];
+        for(int i = 0; i < count; offset += 2, ++i) {
+            chars[i] = (char)(((int)resourceBytes[offset] << 8) | (resourceBytes[offset + 1] & 0xff));
+        }
+        return chars;
+    }
+    private int getInt(int offset) {
+        return (resourceBytes[offset] << 24) |
+                ((resourceBytes[offset+1] & 0xff) << 16) |
+                ((resourceBytes[offset+2] & 0xff) << 8) |
+                ((resourceBytes[offset+3] & 0xff));
+    }
+    private int[] getInts(int offset, int count) {
+        int[] ints = new int[count];
+        for(int i = 0; i < count; offset += 4, ++i) {
+            ints[i] = (resourceBytes[offset] << 24) |
+                        ((resourceBytes[offset+1] & 0xff) << 16) |
+                        ((resourceBytes[offset+2] & 0xff) << 8) |
+                        ((resourceBytes[offset+3] & 0xff));
+        }
+        return ints;
+    }
+    private char[] getTable16KeyOffsets(int offset) {
+        int length = s16BitUnits.charAt(offset++);
+        if(length > 0) {
+            return s16BitUnits.substring(offset, offset + length).toCharArray();
+        } else {
+            return emptyChars;
+        }
+    }
+    private char[] getTableKeyOffsets(int offset) {
+        int length = getChar(offset);
+        if(length > 0) {
+            return getChars(offset + 2, length);
+        } else {
+            return emptyChars;
+        }
+    }
+    private int[] getTable32KeyOffsets(int offset) {
+        int length = getInt(offset);
+        if(length > 0) {
+            return getInts(offset + 4, length);
+        } else {
+            return emptyInts;
+        }
+    }
+
+    /** Refers to ASCII key string bytes, for key string matching. */
+    private static final class ByteSequence {
+        private byte[] bytes;
+        private int offset;
+        public ByteSequence(byte[] bytes, int offset) {
+            this.bytes = bytes;
+            this.offset = offset;
+        }
+        public byte charAt(int index) {
+            return bytes[offset + index];
+        }
+    }
+    private String makeKeyStringFromBytes(int keyOffset) {
+        StringBuilder sb = new StringBuilder();
+        byte b;
+        while((b = keyStrings[keyOffset++]) != 0) {
+            sb.append((char)b);
+        }
+        return sb.toString();
+    }
+    private String makeKeyStringFromString(int keyOffset) {
+        int endOffset = keyOffset;
+        while(poolBundleKeysAsString.charAt(endOffset) != 0) {
+            ++endOffset;
+        }
+        return poolBundleKeysAsString.substring(keyOffset, endOffset);
+    }
+    private ByteSequence RES_GET_KEY16(char keyOffset) {
+        if(keyOffset < localKeyLimit) {
+            return new ByteSequence(keyStrings, keyOffset);
+        } else {
+            return new ByteSequence(poolBundleKeys, keyOffset - localKeyLimit);
+        }
+    }
+    private String getKey16String(int keyOffset) {
+        if(keyOffset < localKeyLimit) {
+            return makeKeyStringFromBytes(keyOffset);
+        } else {
+            return makeKeyStringFromString(keyOffset - localKeyLimit);
+        }
+    }
+    private ByteSequence RES_GET_KEY32(int keyOffset) {
+        if(keyOffset >= 0) {
+            return new ByteSequence(keyStrings, keyOffset);
+        } else {
+            return new ByteSequence(poolBundleKeys, keyOffset & 0x7fffffff);
+        }
+    }
+    private String getKey32String(int keyOffset) {
+        if(keyOffset >= 0) {
+            return makeKeyStringFromBytes(keyOffset);
+        } else {
+            return makeKeyStringFromString(keyOffset & 0x7fffffff);
+        }
+    }
+    // Compare the length-specified input key with the
+    // NUL-terminated tableKey.
+    private static int compareKeys(CharSequence key, ByteSequence tableKey) {
+        int i;
+        for(i = 0; i < key.length(); ++i) {
+            int c2 = tableKey.charAt(i);
+            if(c2 == 0) {
+                return 1;  // key > tableKey because key is longer.
+            }
+            int diff = (int)key.charAt(i) - c2;
+            if(diff != 0) {
+                return diff;
+            }
+        }
+        return -(int)tableKey.charAt(i);
+    }
+    private int compareKeys(CharSequence key, char keyOffset) {
+        return compareKeys(key, RES_GET_KEY16(keyOffset));
+    }
+    private int compareKeys32(CharSequence key, int keyOffset) {
+        return compareKeys(key, RES_GET_KEY32(keyOffset));
+    }
+
+    String getString(int res) {
+        int offset=RES_GET_OFFSET(res);
+        int length;
+        if(RES_GET_TYPE(res)==ICUResourceBundle.STRING_V2) {
+            int first = s16BitUnits.charAt(offset);
+            if((first&0xfffffc00)!=0xdc00) {  // C: if(!U16_IS_TRAIL(first)) {
+                if(first==0) {
+                    return emptyString;
+                }
+                int endOffset;
+                for(endOffset=offset+1; s16BitUnits.charAt(endOffset)!=0; ++endOffset) {}
+                return s16BitUnits.substring(offset, endOffset);
+            } else if(first<0xdfef) {
+                length=first&0x3ff;
+                ++offset;
+            } else if(first<0xdfff) {
+                length=((first-0xdfef)<<16)|s16BitUnits.charAt(offset+1);
+                offset+=2;
+            } else {
+                length=((int)s16BitUnits.charAt(offset+1)<<16)|s16BitUnits.charAt(offset+2);
+                offset+=3;
+            }
+            return s16BitUnits.substring(offset, offset+length);
+        } else if(res==offset) /* RES_GET_TYPE(res)==URES_STRING */ {
+            if(res==0) {
+                return emptyString;
+            } else {
+                offset=getResourceByteOffset(offset);
+                length=getInt(offset);
+                return new String(getChars(offset+4, length));
+            }
+        } else {
+            return null;
+        }
+    }
+
+    String getAlias(int res) {
+        int offset=RES_GET_OFFSET(res);
+        int length;
+        if(RES_GET_TYPE(res)==ICUResourceBundle.ALIAS) {
+            if(offset==0) {
+                return emptyString;
+            } else {
+                offset=getResourceByteOffset(offset);
+                length=getInt(offset);
+                return new String(getChars(offset+4, length));
+            }
+        } else {
+            return null;
+        }
+    }
+
+    byte[] getBinary(int res, byte[] ba) {
+        int offset=RES_GET_OFFSET(res);
+        int length;
+        if(RES_GET_TYPE(res)==UResourceBundle.BINARY) {
+            if(offset==0) {
+                return emptyBytes;
+            } else {
+                offset=getResourceByteOffset(offset);
+                length=getInt(offset);
+                if(ba==null || ba.length!=length) {
+                    ba=new byte[length];
+                }
+                System.arraycopy(resourceBytes, offset+4, ba, 0, length);
+                return ba;
+            }
+        } else {
+            return null;
+        }
+    }
+
+    ByteBuffer getBinary(int res) {
+        int offset=RES_GET_OFFSET(res);
+        int length;
+        if(RES_GET_TYPE(res)==UResourceBundle.BINARY) {
+            if(offset==0) {
+                // Don't just
+                //   return emptyByteBuffer;
+                // in case it matters whether the buffer's mark is defined or undefined.
+                return emptyByteBuffer.duplicate();
+            } else {
+                offset=getResourceByteOffset(offset);
+                length=getInt(offset);
+                return ByteBuffer.wrap(resourceBytes, offset+4, length).slice().asReadOnlyBuffer();
+            }
+        } else {
+            return null;
+        }
+    }
+
+    int[] getIntVector(int res) {
+        int offset=RES_GET_OFFSET(res);
+        int length;
+        if(RES_GET_TYPE(res)==UResourceBundle.INT_VECTOR) {
+            if(offset==0) {
+                return emptyInts;
+            } else {
+                offset=getResourceByteOffset(offset);
+                length=getInt(offset);
+                return getInts(offset+4, length);
+            }
+        } else {
+            return null;
+        }
+    }
+
+    Container getArray(int res) {
+        int type=RES_GET_TYPE(res);
+        int offset=RES_GET_OFFSET(res);
+        switch(type) {
+        case UResourceBundle.ARRAY:
+        case ICUResourceBundle.ARRAY16:
+            if(offset==0) {
+                return new Container(this);
+            }
+            break;
+        default:
+            return null;
+        }
+        switch(type) {
+        case UResourceBundle.ARRAY:
+            return new Array(this, offset);
+        case ICUResourceBundle.ARRAY16:
+            return new Array16(this, offset);
+        default:
+            return null;
+        }
+    }
+
+    Table getTable(int res) {
+        int type=RES_GET_TYPE(res);
+        int offset=RES_GET_OFFSET(res);
+        switch(type) {
+        case UResourceBundle.TABLE:
+        case ICUResourceBundle.TABLE16:
+        case ICUResourceBundle.TABLE32:
+            if(offset==0) {
+                return new Table(this);
+            }
+            break;
+        default:
+            return null;
+        }
+        switch(type) {
+        case UResourceBundle.TABLE:
+            return new Table1632(this, offset);
+        case ICUResourceBundle.TABLE16:
+            return new Table16(this, offset);
+        case ICUResourceBundle.TABLE32:
+            return new Table32(this, offset);
+        default:
+            return null;
+        }
+    }
+
+    // Container value classes --------------------------------------------- ***
+
+    static class Container {
+        protected ICUResourceBundleReader reader;
+        protected int size;
+        protected int itemsOffset;
+
+        int getSize() {
+            return size;
+        }
+        int getContainerResource(int index) {
+            return ICUResourceBundle.RES_BOGUS;
+        }
+        protected int getContainer16Resource(int index) {
+            if (index < 0 || size <= index) {
+                return ICUResourceBundle.RES_BOGUS;
+            }
+            return (ICUResourceBundle.STRING_V2 << 28) |
+                   reader.s16BitUnits.charAt(itemsOffset + index);
+        }
+        protected int getContainer32Resource(int index) {
+            if (index < 0 || size <= index) {
+                return ICUResourceBundle.RES_BOGUS;
+            }
+            return reader.getInt(itemsOffset + 4 * index);
+        }
+        Container(ICUResourceBundleReader reader) {
+            this.reader = reader;
+        }
+    }
+    private static final class Array extends Container {
+        int getContainerResource(int index) {
+            return getContainer32Resource(index);
+        }
+        Array(ICUResourceBundleReader reader, int offset) {
+            super(reader);
+            offset = reader.getResourceByteOffset(offset);
+            size = reader.getInt(offset);
+            itemsOffset = offset + 4;
+        }
+    }
+    private static final class Array16 extends Container {
+        int getContainerResource(int index) {
+            return getContainer16Resource(index);
+        }
+        Array16(ICUResourceBundleReader reader, int offset) {
+            super(reader);
+            size = reader.s16BitUnits.charAt(offset);
+            itemsOffset = offset + 1;
+        }
+    }
+    static class Table extends Container {
+        protected char[] keyOffsets;
+        protected int[] key32Offsets;
+
+        String getKey(int index) {
+            if (index < 0 || size <= index) {
+                return null;
+            }
+            return keyOffsets != null ?
+                        reader.getKey16String(keyOffsets[index]) :
+                        reader.getKey32String(key32Offsets[index]);
+        }
+        private static final int URESDATA_ITEM_NOT_FOUND = -1;
+        int findTableItem(CharSequence key) {
+            int mid, start, limit;
+            int result;
+
+            /* do a binary search for the key */
+            start=0;
+            limit=size;
+            while(start<limit) {
+                mid = (start + limit) / 2;
+                if (keyOffsets != null) {
+                    result = reader.compareKeys(key, keyOffsets[mid]);
+                } else {
+                    result = reader.compareKeys32(key, key32Offsets[mid]);
+                }
+                if (result < 0) {
+                    limit = mid;
+                } else if (result > 0) {
+                    start = mid + 1;
+                } else {
+                    /* We found it! */
+                    return mid;
+                }
+            }
+            return URESDATA_ITEM_NOT_FOUND;  /* not found or table is empty. */
+        }
+        int getTableResource(String resKey) {
+            return getContainerResource(findTableItem(resKey));
+        }
+        Table(ICUResourceBundleReader reader) {
+            super(reader);
+        }
+    }
+    private static final class Table1632 extends Table {
+        int getContainerResource(int index) {
+            return getContainer32Resource(index);
+        }
+        Table1632(ICUResourceBundleReader reader, int offset) {
+            super(reader);
+            offset = reader.getResourceByteOffset(offset);
+            keyOffsets = reader.getTableKeyOffsets(offset);
+            size = keyOffsets.length;
+            itemsOffset = offset + 2 * ((size + 2) & ~1);  // Skip padding for 4-alignment.
+        }
+    }
+    private static final class Table16 extends Table {
+        int getContainerResource(int index) {
+            return getContainer16Resource(index);
+        }
+        Table16(ICUResourceBundleReader reader, int offset) {
+            super(reader);
+            keyOffsets = reader.getTable16KeyOffsets(offset);
+            size = keyOffsets.length;
+            itemsOffset = offset + 1 + size;
+        }
+    }
+    private static final class Table32 extends Table {
+        int getContainerResource(int index) {
+            return getContainer32Resource(index);
+        }
+        Table32(ICUResourceBundleReader reader, int offset) {
+            super(reader);
+            offset = reader.getResourceByteOffset(offset);
+            key32Offsets = reader.getTable32KeyOffsets(offset);
+            size = key32Offsets.length;
+            itemsOffset = offset + 4 * (1 + size);
+        }
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/ICUService.java b/main/classes/core/src/com/ibm/icu/impl/ICUService.java
new file mode 100644
index 0000000..e4f8ede
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/ICUService.java
@@ -0,0 +1,985 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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<Factory> factories = new ArrayList<Factory>();
+
+    /**
+     * 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<String, Factory> 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<String, Factory> 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<String, CacheEntry> cache = null;
+                SoftReference<Map<String, CacheEntry>> 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 = 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<String, CacheEntry>());
+//                  hardRef = cache; // debug
+                    cref = new SoftReference<Map<String, CacheEntry>>(cache);
+                }
+
+                String currentDescriptor = null;
+                ArrayList<String> 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 = 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 = 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<String>(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) {
+                            for (String desc : cacheDescriptorList) {
+                                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<Map<String, CacheEntry>> 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<String> 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<String> getVisibleIDs(String matchID) {
+        Set<String> result = getVisibleIDMap().keySet();
+
+        Key fallbackKey = createKey(matchID);
+
+        if (fallbackKey != null) {
+            Set<String> temp = new HashSet<String>(result.size());
+            for (String id : result) {
+                if (fallbackKey.isFallbackOf(id)) {
+                    temp.add(id);
+                }
+            }
+            result = temp;
+        }
+        return result;
+    }
+
+    /**
+     * Return a map from visible ids to factories.
+     */
+    private Map<String, Factory> getVisibleIDMap() {
+        Map<String, Factory> idcache = null;
+        SoftReference<Map<String, Factory>> ref = idref;
+        if (ref != null) {
+            idcache = 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<String, Factory>();
+                        ListIterator<Factory> lIter = factories.listIterator(factories.size());
+                        while (lIter.hasPrevious()) {
+                            Factory f = lIter.previous();
+                            f.updateVisibleIDs(idcache);
+                        }
+                        idcache = Collections.unmodifiableMap(idcache);
+                        idref = new SoftReference<Map<String, Factory>>(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 = ref.get();
+                }
+            }
+        }
+
+        return idcache;
+    }
+    private SoftReference<Map<String, Factory>> 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<String, Factory> m = getVisibleIDMap();
+        Factory f = m.get(id);
+        if (f != null) {
+            return f.getDisplayName(id, locale);
+        }
+
+        Key key = createKey(id);
+        while (key.fallback()) {
+            f = 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<String, String> 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<String, String> 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<String, String> getDisplayNames(ULocale locale, Comparator<Object> com) {
+        return getDisplayNames(locale, com, null);
+    }
+
+    /**
+     * Convenience override of getDisplayNames(ULocale, Comparator, String) that
+     * uses null for the comparator.
+     */
+    public SortedMap<String, String> 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<String, String> getDisplayNames(ULocale locale, Comparator<Object> com, String matchID) {
+        SortedMap<String, String> 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<String, String>(com); // sorted
+                    
+                    Map<String, Factory> m = getVisibleIDMap();
+                    Iterator<Entry<String, Factory>> ei = m.entrySet().iterator();
+                    while (ei.hasNext()) {
+                        Entry<String, Factory> e = ei.next();
+                        String id = e.getKey();
+                        Factory f = 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<String, String> result = new TreeMap<String, String>(dncache);
+        Iterator<Entry<String, String>> iter = result.entrySet().iterator();
+        while (iter.hasNext()) {
+            Entry<String, String> e = iter.next();
+            if (!matchKey.isFallbackOf(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<SortedMap<String, String>> ref;
+        private Comparator<Object> com;
+
+        LocaleRef(SortedMap<String, String> dnCache, ULocale locale, Comparator<Object> com) {
+            this.locale = locale;
+            this.com = com;
+            this.ref = new SoftReference<SortedMap<String, String>>(dnCache);
+        }
+
+
+        SortedMap<String, String> get(ULocale loc, Comparator<Object> comp) {
+            SortedMap<String, String> m = 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<Factory> factories() {
+        try {
+            factoryLock.acquireRead();
+            return new ArrayList<Factory>(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/main/classes/core/src/com/ibm/icu/impl/IllegalIcuArgumentException.java b/main/classes/core/src/com/ibm/icu/impl/IllegalIcuArgumentException.java
new file mode 100644
index 0000000..204a264
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/IllegalIcuArgumentException.java
@@ -0,0 +1,32 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, Google, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+/**
+ * @author markdavis
+ *
+ */
+public class IllegalIcuArgumentException extends IllegalArgumentException {
+    private static final long serialVersionUID = 3789261542830211225L;
+
+    public IllegalIcuArgumentException(String errorMessage) {
+        super(errorMessage);
+    }
+    
+    public IllegalIcuArgumentException(Throwable cause) {
+        super(cause);
+    }
+    
+    public IllegalIcuArgumentException(String errorMessage, Throwable cause) {
+        super(errorMessage, cause);
+    }
+    
+    public synchronized IllegalIcuArgumentException initCause(Throwable cause) {
+        return (IllegalIcuArgumentException) super.initCause(cause);
+    }
+    
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/ImplicitCEGenerator.java b/main/classes/core/src/com/ibm/icu/impl/ImplicitCEGenerator.java
new file mode 100644
index 0000000..345adcb
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/ImplicitCEGenerator.java
@@ -0,0 +1,389 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2004-2009, 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 The minimum primary value.
+     * @param maxPrimary The maximum primary value.
+     * @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 The implicit value passed.
+     * @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 The code point to convert to implicit.
+     * @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/main/classes/core/src/com/ibm/icu/impl/IntTrie.java b/main/classes/core/src/com/ibm/icu/impl/IntTrie.java
new file mode 100644
index 0000000..e6c5a69
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/IntTrie.java
@@ -0,0 +1,332 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2009, 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
+     */
+    @SuppressWarnings("all") // No way to ignore dead code warning specifically - see eclipse bug#282770
+    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/main/classes/core/src/com/ibm/icu/impl/IntTrieBuilder.java b/main/classes/core/src/com/ibm/icu/impl/IntTrieBuilder.java
new file mode 100644
index 0000000..25fc349
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/InvalidFormatException.java b/main/classes/core/src/com/ibm/icu/impl/InvalidFormatException.java
new file mode 100644
index 0000000..6f7c2a9
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/IterableComparator.java b/main/classes/core/src/com/ibm/icu/impl/IterableComparator.java
new file mode 100644
index 0000000..a3061ce
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/IterableComparator.java
@@ -0,0 +1,59 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2009, Google Inc, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.util.Comparator;
+import java.util.Iterator;
+
+public class IterableComparator<T> implements Comparator<Iterable<T>> {
+  private final Comparator<T> comparator;
+  private final int shorterFirst; // = 1 for shorter first, -1 otherwise
+  
+  public IterableComparator() {
+    this(null,true);
+  }
+  
+  public IterableComparator(Comparator<T> comparator) {
+    this(comparator,true);
+  }
+  
+  public IterableComparator(Comparator<T> comparator, boolean shorterFirst) {
+    this.comparator = comparator;
+    this.shorterFirst = shorterFirst ? 1 : -1;
+  }
+
+  @SuppressWarnings("unchecked")
+  public int compare(Iterable<T> a, Iterable<T> b) {
+    if (a == null) {
+      return b == null ? 0 : -shorterFirst;
+    } else if (b == null) {
+      return shorterFirst;
+    }
+    Iterator<T> ai = a.iterator();
+    Iterator<T> bi = b.iterator();
+    while (true) {
+      if (!ai.hasNext()) {
+        return bi.hasNext() ? -shorterFirst : 0;
+      }
+      if (!bi.hasNext()) {
+        return shorterFirst;
+      }
+      T aItem = ai.next();
+      T bItem = bi.next();
+      int result = comparator != null ? comparator.compare(aItem, bItem) : ((Comparable) aItem).compareTo(bItem);
+      if (result != 0) {
+        return result;
+      }
+    }
+  }
+  @SuppressWarnings("unchecked")
+  public static <T> int compareIterables(Iterable<T> a, Iterable<T> b) {
+    return NOCOMPARATOR.compare(a, b);
+  }
+  @SuppressWarnings("unchecked")
+  private static final IterableComparator NOCOMPARATOR = new IterableComparator();
+}
\ No newline at end of file
diff --git a/main/classes/core/src/com/ibm/icu/impl/JavaTimeZone.java b/main/classes/core/src/com/ibm/icu/impl/JavaTimeZone.java
new file mode 100644
index 0000000..9df16f65
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/JavaTimeZone.java
@@ -0,0 +1,209 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008-2009, 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<String> AVAILABLESET;
+
+    private java.util.TimeZone javatz;
+    private transient java.util.Calendar javacal;
+
+    static {
+        AVAILABLESET = new TreeSet<String>();
+        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
+                   javacal.setTimeInMillis(javacal.getTimeInMillis() - delta - 1);
+                }
+            } else {
+                javacal.setTimeInMillis(date);
+            }
+            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/main/classes/core/src/com/ibm/icu/impl/LocaleUtility.java b/main/classes/core/src/com/ibm/icu/impl/LocaleUtility.java
new file mode 100644
index 0000000..0633738
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/MultiComparator.java b/main/classes/core/src/com/ibm/icu/impl/MultiComparator.java
new file mode 100644
index 0000000..01ade38
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/MultiComparator.java
@@ -0,0 +1,36 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.util.Comparator;
+
+public class MultiComparator<T> implements Comparator<T> {
+    private Comparator<T>[] comparators;
+
+    public MultiComparator (Comparator<T>... 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(T arg0, T 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;
+    }
+}
\ No newline at end of file
diff --git a/main/classes/core/src/com/ibm/icu/impl/NormalizerDataReader.java b/main/classes/core/src/com/ibm/icu/impl/NormalizerDataReader.java
new file mode 100644
index 0000000..e677e96
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/NormalizerImpl.java b/main/classes/core/src/com/ibm/icu/impl/NormalizerImpl.java
new file mode 100644
index 0000000..445ef30
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/NormalizerImpl.java
@@ -0,0 +1,3850 @@
+ /*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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    =  0xfc000000 & UNSIGNED_INT_MASK;
+    private static final long  SURROGATES_TOP =  0xfff00000 & UNSIGNED_INT_MASK;
+    private static final long  MIN_HANGUL     =  0xfff00000 & UNSIGNED_INT_MASK;
+    //private static final long  MIN_JAMO_V     =  0xfff20000 & UNSIGNED_INT_MASK;
+    private static final long  JAMO_V_TOP     =  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          =   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 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
+        */
+        /* 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 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
+        */
+        /* 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 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
+        */
+        /* auxTrie: the folding offset is in bits 9..0 of the 16-bit trie result */
+        public int getFoldingOffset(int value) {
+            return (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 = -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 = 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, -prevCC)) {
+                        prevCC = FCDTrieImpl.fcdTrie.getBMPValue((char)-prevCC) & 0xff;
+                    } else {
+                        prevCC = 0; /* excluded: fcd16==0 */
+                    }
+                                      
+                }
+    
+                if(cc<prevCC) {
+                    return false;
+                }
+            }
+            prevCC = 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 = indexes[INDEX_MIN_NFD_NO_MAYBE];
+                qcMask = QC_NFD;
+            } else {
+                minNoMaybe = 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 = 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 = 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 = -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 = 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, -prevCC)) {
+                        prevCC = getFCD16(-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 = fcd16 >> 8;
+            if(cc==0 || cc>=prevCC) {
+                /* the order is ok */
+                if(cc==0) {
+                    decompStart=prevSrc;
+                }
+                prevCC = 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 -= (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 (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 (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(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 = 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(s1.charAt(i-1)) ||
+                    UTF16.isLeadSurrogate(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(s1.charAt(i))||
+                         UTF16.isLeadSurrogate(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/main/classes/core/src/com/ibm/icu/impl/OlsonTimeZone.java b/main/classes/core/src/com/ibm/icu/impl/OlsonTimeZone.java
new file mode 100644
index 0000000..cd0dd26
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/OlsonTimeZone.java
@@ -0,0 +1,1071 @@
+ /*
+  *******************************************************************************
+  * 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.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.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) {
+            SimpleTimeZone stz = new SimpleTimeZone(offsetMillis, getID());
+
+            boolean bDst = useDaylightTime();
+            if (bDst) {
+                TimeZoneRule[] currentRules = getSimpleTimeZoneRulesNear(current);
+                if (currentRules.length != 3) {
+                    // DST was observed at the beginning of this year, so useDaylightTime
+                    // returned true.  getSimpleTimeZoneRulesNear requires at least one
+                    // future transition for making a pair of rules.  This implementation
+                    // rolls back the time before the latest offset transition.
+                    TimeZoneTransition tzt = getPreviousTransition(current, false);
+                    if (tzt != null) {
+                        currentRules = getSimpleTimeZoneRulesNear(tzt.getTime() - 1);
+                    }
+                }
+                if (currentRules.length == 3
+                        && (currentRules[1] instanceof AnnualTimeZoneRule)
+                        && (currentRules[2] instanceof AnnualTimeZoneRule)) {
+                    // A pair of AnnualTimeZoneRule
+                    AnnualTimeZoneRule r1 = (AnnualTimeZoneRule)currentRules[1];
+                    AnnualTimeZoneRule r2 = (AnnualTimeZoneRule)currentRules[2];
+                    DateTimeRule start, end;
+                    int offset1 = r1.getRawOffset() + r1.getDSTSavings();
+                    int offset2 = r2.getRawOffset() + r2.getDSTSavings();
+                    int sav;
+                    if (offset1 > offset2) {
+                        start = r1.getRule();
+                        end = r2.getRule();
+                        sav = offset1 - offset2;
+                    } else {
+                        start = r2.getRule();
+                        end = r1.getRule();
+                        sav = offset2 - offset1;
+                    }
+                    // getSimpleTimeZoneRulesNear always return rules using DOW / WALL_TIME
+                    stz.setStartRule(start.getRuleMonth(), start.getRuleWeekInMonth(), start.getRuleDayOfWeek(),
+                                            start.getRuleMillisInDay());
+                    stz.setEndRule(end.getRuleMonth(), end.getRuleWeekInMonth(), end.getRuleDayOfWeek(),
+                                            end.getRuleMillisInDay());
+                    // set DST saving amount and start year
+                    stz.setDSTSavings(sav);
+                } else {
+                    // This could only happen if last rule is DST
+                    // and the rule used forever.  For example, Asia/Dhaka
+                    // in tzdata2009i stays in DST forever.
+
+                    // Hack - set DST starting at midnight on Jan 1st,
+                    // ending 23:59:59.999 on Dec 31st
+                    stz.setStartRule(0, 1, 0);
+                    stz.setEndRule(11, 31, Grego.MILLIS_PER_DAY - 1);
+                }
+            }
+
+            int[] fields = Grego.timeToFields(current, null);
+            finalYear = fields[0] - 1; // finalYear is (year of finalMillis) - 1
+            finalMillis = Grego.fieldsToDay(fields[0], 0, 1);
+
+            if (bDst) {
+                // we probably do not need to set start year of final rule
+                // to finalzone itself, but we always do this for now.
+                stz.setStartYear(finalYear);
+            }
+
+            finalZone = stz;
+
+        } else {
+            finalZone.setRawOffset(offsetMillis);
+        }
+
+        transitionRulesInitialized = false;
+    }
+
+    public Object clone() {
+        OlsonTimeZone other = (OlsonTimeZone) super.clone();
+        if(finalZone!=null){
+            finalZone.setID(getID());
+            other.finalZone = (SimpleTimeZone)finalZone.clone();
+        }
+        other.transitionTimes = transitionTimes.clone();
+        other.typeData = typeData.clone();
+        other.typeOffsets = 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)
+                    || (transitionTimes[i] > start && i > 0 && dstOffset(typeData[i - 1]) != 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 = 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 = typeOffsets.length >> 1;
+
+        // Type data must be of the same size as the transitions list        
+        r = res.get(2);
+        typeData = r.getBinary(null);
+        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.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 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[index << 1];
+    }
+
+    private int dstOffset(int index){
+        return typeOffsets[(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/main/classes/core/src/com/ibm/icu/impl/PVecToTrieCompactHandler.java b/main/classes/core/src/com/ibm/icu/impl/PVecToTrieCompactHandler.java
new file mode 100644
index 0000000..3fb6049
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/PVecToTrieCompactHandler.java
@@ -0,0 +1,40 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and   *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+ */
+
+/*
+ * @author Shaopeng Jia
+ */
+
+package com.ibm.icu.impl;
+
+import com.ibm.icu.impl.PropsVectors.CompactHandler;
+
+public class PVecToTrieCompactHandler implements CompactHandler {
+    public IntTrieBuilder builder;
+    public int initialValue;
+
+    public void setRowIndexForErrorValue(int rowIndex) {
+    }
+
+    public void setRowIndexForInitialValue(int rowIndex) {
+        initialValue = rowIndex;
+    }
+
+    public void setRowIndexForRange(int start, int end, int rowIndex) {
+        builder.setRange(start, end + 1, rowIndex, true);
+    }
+
+    public void startRealValues(int rowIndex) {
+        if (rowIndex > 0xffff) {
+            // too many rows for a 16-bit trie
+            throw new IndexOutOfBoundsException();
+        } else {
+            builder = new IntTrieBuilder(null, 100000, initialValue,
+                    initialValue, false);
+        } 
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/PatternTokenizer.java b/main/classes/core/src/com/ibm/icu/impl/PatternTokenizer.java
new file mode 100644
index 0000000..3f576b5
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/PatternTokenizer.java
@@ -0,0 +1,390 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2009, 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 Characters to be ignored.
+     * @return A PatternTokenizer object in which characters are specified as ignored characters.
+     */
+    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 Characters to be set as syntax characters.
+     * @return A PatternTokenizer object in which characters are specified as syntax characters.
+     */
+    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 Characters to be set as extra quoting characters.
+     * @return A PatternTokenizer object in which characters are specified as extra quoting characters.
+     */
+    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 Characters to be set as escape characters.
+     * @return A PatternTokenizer object in which characters are specified as escape characters.
+     */
+    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;
+    }
+
+    public PatternTokenizer setPattern(CharSequence pattern) {
+        return setPattern(pattern.toString());
+    }
+
+    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;
+
+    public String quoteLiteral(CharSequence string) {
+        return quoteLiteral(string.toString());
+    }
+
+    /**
+     * Quote a literal string, using the available settings. Thus syntax characters, quote characters, and ignorable characters will be put into quotes.
+     * @param string String passed to quote a literal string.
+     * @return A string using the available settings will place syntax, quote, or ignorable characters into quotes.
+     */
+    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/main/classes/core/src/com/ibm/icu/impl/PluralRulesLoader.java b/main/classes/core/src/com/ibm/icu/impl/PluralRulesLoader.java
new file mode 100644
index 0000000..4af176b
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/PluralRulesLoader.java
@@ -0,0 +1,209 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008-2009, 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.Collections;
+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<String, PluralRules> rulesIdToRules;
+    private Map<String, String> localeIdToRulesId; // lazy init, use
+                                                   // getLocaleIdToRulesIdMap to
+                                                   // access
+    private Map<String, ULocale> rulesIdToEquivalentULocale; // lazy init, use
+                                                             // getRulesIdToEquivalentULocaleMap
+                                                             // to access
+
+    /**
+     * Access through singleton.
+     */
+    private PluralRulesLoader() {
+        rulesIdToRules = new HashMap<String, PluralRules>();
+    }
+
+    /**
+     * Returns the locales for which we have plurals data. Utility for testing.
+     */
+    public ULocale[] getAvailableULocales() {
+        Set<String> keys = getLocaleIdToRulesIdMap().keySet();
+        ULocale[] locales = new ULocale[keys.size()];
+        int n = 0;
+        for (Iterator<String> iter = keys.iterator(); iter.hasNext();) {
+            locales[n++] = ULocale.createCanonical(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<String, String> 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 = getRulesIdToEquivalentULocaleMap().get(
+                rulesId);
+        if (result == null) {
+            return ULocale.ROOT; // ultimate fallback
+        }
+
+        return result;
+    }
+
+    /**
+     * Returns the lazily-constructed map.
+     */
+    private Map<String, String> getLocaleIdToRulesIdMap() {
+        checkBuildRulesIdMaps();
+        return localeIdToRulesId;
+    }
+
+    /**
+     * Returns the lazily-constructed map.
+     */
+    private Map<String, ULocale> 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<String, String>(); // sort for
+                                                                   // convenience
+                                                                   // of
+                                                                   // getAvailableULocales
+                rulesIdToEquivalentULocale = new HashMap<String, ULocale>(); // 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 = Collections.emptyMap(); // dummy so we don't
+                                                            // try again, can
+                                                            // read
+                rulesIdToEquivalentULocale = Collections.emptyMap();
+            }
+        }
+    }
+
+    /**
+     * 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<String, String> idMap = getLocaleIdToRulesIdMap();
+        String localeId = ULocale.canonicalize(locale.getBaseName());
+        String rulesId = null;
+        while (null == (rulesId = 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 = 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/main/classes/core/src/com/ibm/icu/impl/PropsVectors.java b/main/classes/core/src/com/ibm/icu/impl/PropsVectors.java
new file mode 100644
index 0000000..6378485
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/PropsVectors.java
@@ -0,0 +1,559 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and   *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+ */
+
+/**
+ * Store bits (Unicode character properties) in bit set vectors.
+ * 
+ * This is a port of the C++ class UPropsVectors from ICU4C
+ * 
+ * @author Shaopeng Jia
+ * @internal
+ */
+
+package com.ibm.icu.impl;
+
+import java.util.Arrays;
+import java.util.Comparator;
+
+/**
+ * Unicode Properties Vectors associated with code point ranges.
+ * 
+ * Rows of primitive integers in a contiguous array store the range limits and
+ * the properties vectors.
+ * 
+ * In each row, row[0] contains the start code point and row[1] contains the
+ * limit code point, which is the start of the next range.
+ * 
+ * Initially, there is only one range [0..0x110000] with values 0.
+ * 
+ * It would be possible to store only one range boundary per row, but
+ * self-contained rows allow to later sort them by contents.
+ */
+public class PropsVectors {
+    private int v[];
+    private int columns; // number of columns, plus two for start
+    // and limit values
+    private int maxRows;
+    private int rows;
+    private int prevRow; // search optimization: remember last row seen
+    private boolean isCompacted;
+
+    // internal function to compare elements in v and target. Return true iff
+    // elements in v starting from index1 to index1 + length - 1 
+    // are exactly the same as elements in target
+    // starting from index2 to index2 + length - 1
+    private boolean areElementsSame(int index1, int[] target, int index2, 
+            int length) {
+        for (int i = 0; i < length; ++i) {
+            if (v[index1 + i] != target[index2 + i]) {
+                return false;
+            }
+        }
+        return true;
+    }
+    
+    // internal function which given rangeStart, returns
+    // index where v[index]<=rangeStart<v[index+1].
+    // The returned index is a multiple of columns, and therefore
+    // points to the start of a row.
+    private int findRow(int rangeStart) {
+        int index = 0;
+
+        // check the vicinity of the last-seen row (start
+        // searching with an unrolled loop)
+
+        index = prevRow * columns;
+        if (rangeStart >= v[index]) {
+            if (rangeStart < v[index + 1]) {
+                // same row as last seen
+                return index;
+            } else {
+                index += columns;
+                if (rangeStart < v[index + 1]) {
+                    ++prevRow;
+                    return index;
+                } else {
+                    index += columns;
+                    if (rangeStart < v[index + 1]) {
+                        prevRow += 2;
+                        return index;
+                    } else if ((rangeStart - v[index + 1]) < 10) {
+                        // we are close, continue looping
+                        prevRow += 2;
+                        do {
+                            ++prevRow;
+                            index += columns;
+                        } while (rangeStart >= v[index + 1]);
+                        return index;
+                    }
+                }
+            }
+        } else if (rangeStart < v[1]) {
+            // the very first row
+            prevRow = 0;
+            return 0;
+        }
+
+        // do a binary search for the start of the range
+        int start = 0;
+        int mid = 0;
+        int limit = rows;
+        while (start < limit - 1) {
+            mid = (start + limit) / 2;
+            index = columns * mid;
+            if (rangeStart < v[index]) {
+                limit = mid;
+            } else if (rangeStart < v[index + 1]) {
+                prevRow = mid;
+                return index;
+            } else {
+                start = mid;
+            }
+        }
+
+        // must be found because all ranges together always cover
+        // all of Unicode
+        prevRow = start;
+        index = start * columns;
+        return index;
+    }
+
+    /*
+     * Special pseudo code points for storing the initialValue and the
+     * errorValue which are used to initialize a Trie or similar.
+     */
+    public final static int FIRST_SPECIAL_CP = 0x110000;
+    public final static int INITIAL_VALUE_CP = 0x110000;
+    public final static int ERROR_VALUE_CP = 0x110001;
+    public final static int MAX_CP = 0x110001;
+
+    public final static int INITIAL_ROWS = 1 << 12;
+    public final static int MEDIUM_ROWS = 1 << 16;
+    public final static int MAX_ROWS = MAX_CP + 1;
+
+    /*
+     * Constructor.
+     * @param numOfColumns Number of value integers (32-bit int) per row.
+     */
+    public PropsVectors(int numOfColumns) {
+        if (numOfColumns < 1) {
+            throw new IllegalArgumentException("numOfColumns need to be no "
+                    + "less than 1; but it is " + numOfColumns);
+        }
+        columns = numOfColumns + 2; // count range start and limit columns
+        v = new int[INITIAL_ROWS * columns];
+        maxRows = INITIAL_ROWS;
+        rows = 2 + (MAX_CP - FIRST_SPECIAL_CP);
+        prevRow = 0;
+        isCompacted = false;
+        v[0] = 0;
+        v[1] = 0x110000;
+        int index = columns;
+        for (int cp = FIRST_SPECIAL_CP; cp <= MAX_CP; ++cp) {
+            v[index] = cp;
+            v[index + 1] = cp + 1;
+            index += columns;
+        }
+    }
+
+    /*
+     * In rows for code points [start..end], select the column, reset the mask
+     * bits and set the value bits (ANDed with the mask).
+     * 
+     * @throws IllegalArgumentException
+     * 
+     * @throws IllegalStateException
+     * 
+     * @throws IndexOutOfBoundsException
+     */
+    public void setValue(int start, int end, int column, int value, int mask) {
+        if (start < 0 || start > end || end > MAX_CP || column < 0
+                || column >= (columns - 2)) {
+            throw new IllegalArgumentException();
+        }
+        if (isCompacted) {
+            throw new IllegalStateException("Shouldn't be called after"
+                    + "compact()!");
+        }
+
+        int firstRow, lastRow;
+        int limit = end + 1;
+        boolean splitFirstRow, splitLastRow;
+        // skip range start and limit columns
+        column += 2;
+        value &= mask;
+
+        // find the rows whose ranges overlap with the input range
+        // find the first and last row, always successful
+        firstRow = findRow(start);
+        lastRow = findRow(end);
+
+        /*
+         * Rows need to be split if they partially overlap with the input range
+         * (only possible for the first and last rows) and if their value
+         * differs from the input value.
+         */
+        splitFirstRow = (start != v[firstRow] && value != (v[firstRow + column] & mask));
+        splitLastRow = (limit != v[lastRow + 1] && value != (v[lastRow + column] & mask));
+
+        // split first/last rows if necessary
+        if (splitFirstRow || splitLastRow) {
+            int rowsToExpand = 0;
+            if (splitFirstRow) {
+                ++rowsToExpand;
+            }
+            if (splitLastRow) {
+                ++rowsToExpand;
+            }
+            int newMaxRows = 0;
+            if ((rows + rowsToExpand) > maxRows) {
+                if (maxRows < MEDIUM_ROWS) {
+                    newMaxRows = MEDIUM_ROWS;
+                } else if (maxRows < MAX_ROWS) {
+                    newMaxRows = MAX_ROWS;
+                } else {
+                    throw new IndexOutOfBoundsException(
+                            "MAX_ROWS exceeded! Increase it to a higher value" +
+                            "in the implementation");
+                }
+                int[] temp = new int[newMaxRows * columns];
+                System.arraycopy(v, 0, temp, 0, rows * columns);
+                v = temp;
+                maxRows = newMaxRows;
+            }
+
+            // count the number of row cells to move after the last row,
+            // and move them
+            int count = (rows * columns) - (lastRow + columns);
+            if (count > 0) {
+                System.arraycopy(v, lastRow + columns, v, lastRow
+                        + (1 + rowsToExpand) * columns, count);
+            }
+            rows += rowsToExpand;
+
+            // split the first row, and move the firstRow pointer
+            // to the second part
+            if (splitFirstRow) {
+                // copy all affected rows up one and move the lastRow pointer
+                count = lastRow - firstRow + columns;
+                System.arraycopy(v, firstRow, v, firstRow + columns, count);
+                lastRow += columns;
+
+                // split the range and move the firstRow pointer
+                v[firstRow + 1] = v[firstRow + columns] = start;
+                firstRow += columns;
+            }
+
+            // split the last row
+            if (splitLastRow) {
+                // copy the last row data
+                System.arraycopy(v, lastRow, v, lastRow + columns, columns);
+
+                // split the range and move the firstRow pointer
+                v[lastRow + 1] = v[lastRow + columns] = limit;
+            }
+        }
+
+        // set the "row last seen" to the last row for the range
+        prevRow = lastRow / columns;
+
+        // set the input value in all remaining rows
+        firstRow += column;
+        lastRow += column;
+        mask = ~mask;
+        for (;;) {
+            v[firstRow] = (v[firstRow] & mask) | value;
+            if (firstRow == lastRow) {
+                break;
+            }
+            firstRow += columns;
+        }
+    }
+
+    /*
+     * Always returns 0 if called after compact().
+     */
+    public int getValue(int c, int column) {
+        if (isCompacted || c < 0 || c > MAX_CP || column < 0
+                || column >= (columns - 2)) {
+            return 0;
+        }
+        int index = findRow(c);
+        return v[index + 2 + column];
+    }
+
+    /*
+     * Returns an array which contains value elements
+     * in row rowIndex. 
+     *
+     * @throws IllegalStateException
+     * @throws IllegalArgumentException
+     */
+    public int[] getRow(int rowIndex) {
+        if (isCompacted) {
+            throw new IllegalStateException(
+                    "Illegal Invocation of the method after compact()");
+        }
+        if (rowIndex < 0 || rowIndex > rows) {
+            throw new IllegalArgumentException("rowIndex out of bound!");
+        }
+        int[] rowToReturn = new int[columns - 2];
+        System.arraycopy(v, rowIndex * columns + 2, rowToReturn, 0,
+                         columns - 2);
+        return rowToReturn;
+    }
+
+    /*
+     * Returns an int which is the start codepoint
+     * in row rowIndex.
+     * 
+     * @throws IllegalStateException
+     * 
+     * @throws IllegalArgumentException
+     */
+    public int getRowStart(int rowIndex) {
+        if (isCompacted) {
+            throw new IllegalStateException(
+                    "Illegal Invocation of the method after compact()");
+        }
+        if (rowIndex < 0 || rowIndex > rows) {
+            throw new IllegalArgumentException("rowIndex out of bound!");
+        }
+        return v[rowIndex * columns];
+    }
+
+    /*
+     * Returns an int which is the limit codepoint 
+     * minus 1 in row rowIndex.
+     * 
+     * @throws IllegalStateException
+     * 
+     * @throws IllegalArgumentException
+     */
+    public int getRowEnd(int rowIndex) {
+        if (isCompacted) {
+            throw new IllegalStateException(
+                    "Illegal Invocation of the method after compact()");
+        }
+        if (rowIndex < 0 || rowIndex > rows) {
+            throw new IllegalArgumentException("rowIndex out of bound!");
+        }
+        return v[rowIndex * columns + 1] - 1;
+    }
+    
+    /*
+     * Compact the vectors:
+     * - modify the memory
+     * - keep only unique vectors
+     * - store them contiguously from the beginning of the memory
+     * - for each (non-unique) row, call the respective function in 
+     *   CompactHandler
+     *
+     * The handler's rowIndex is the index of the row in the compacted
+     * memory block. Therefore, it starts at 0 increases in increments of the 
+     * columns value.
+     *
+     * In a first phase, only special values are delivered (each exactly once).
+     * Then CompactHandler::startRealValues() is called
+     * where rowIndex is the length of the compacted array.
+     * Then, in the second phase, the CompactHandler::setRowIndexForRange() is 
+     * called for each row of real values.
+     */
+    public void compact(CompactHandler compactor) {
+        if (isCompacted) {
+            return;
+        }
+
+        // Set the flag now: Sorting and compacting destroys the builder
+        // data structure.
+        isCompacted = true;
+        int valueColumns = columns - 2; // not counting start & limit
+
+        // sort the properties vectors to find unique vector values
+        Integer[] indexArray = new Integer[rows];
+        for (int i = 0; i < rows; ++i) {
+            indexArray[i] = new Integer(columns * i);
+        }
+
+        Arrays.sort(indexArray, new Comparator<Integer>() {
+            public int compare(Integer o1, Integer o2) {
+                int indexOfRow1 = o1.intValue();
+                int indexOfRow2 = o2.intValue();
+                int count = columns; // includes start/limit columns
+
+                // start comparing after start/limit
+                // but wrap around to them
+                int index = 2;
+                do {
+                    if (v[indexOfRow1 + index] != v[indexOfRow2 + index]) {
+                        return v[indexOfRow1 + index] < v[indexOfRow2 + index] ? -1
+                                : 1;
+                    }
+                    if (++index == columns) {
+                        index = 0;
+                    }
+                } while (--count > 0);
+
+                return 0;
+            }
+        });
+
+        /*
+         * Find and set the special values. This has to do almost the same work
+         * as the compaction below, to find the indexes where the special-value
+         * rows will move.
+         */
+        int count = -valueColumns;
+        for (int i = 0; i < rows; ++i) {
+            int start = v[indexArray[i].intValue()];
+
+            // count a new values vector if it is different
+            // from the current one
+            if (count < 0 || !areElementsSame(indexArray[i].intValue() + 2, v,
+                    indexArray[i-1].intValue() + 2, valueColumns)) {
+                count += valueColumns;
+            }
+
+            if (start == INITIAL_VALUE_CP) {
+                compactor.setRowIndexForInitialValue(count);
+            } else if (start == ERROR_VALUE_CP) {
+                compactor.setRowIndexForErrorValue(count);
+            }
+        }
+
+        // count is at the beginning of the last vector,
+        // add valueColumns to include that last vector
+        count += valueColumns;
+
+        // Call the handler once more to signal the start of
+        // delivering real values.
+        compactor.startRealValues(count);
+
+        /*
+         * Move vector contents up to a contiguous array with only unique 
+         * vector values, and call the handler function for each vector.
+         * 
+         * This destroys the Properties Vector structure and replaces it 
+         * with an array of just vector values.
+         */
+        int[] temp = new int[count];
+        count = -valueColumns;
+        for (int i = 0; i < rows; ++i) {
+            int start = v[indexArray[i].intValue()];
+            int limit = v[indexArray[i].intValue() + 1];
+
+            // count a new values vector if it is different
+            // from the current one
+            if (count < 0 || !areElementsSame(indexArray[i].intValue() + 2, 
+                    temp, count, valueColumns)) {
+                count += valueColumns;
+                System.arraycopy(v, indexArray[i].intValue() + 2, temp, count,
+                        valueColumns);
+            }
+
+            if (start < FIRST_SPECIAL_CP) {
+                compactor.setRowIndexForRange(start, limit - 1, count);
+            }
+        }
+        v = temp;
+        
+        // count is at the beginning of the last vector,
+        // add one to include that last vector
+        rows = count / valueColumns + 1;
+    }
+
+    /*
+     * Get the vectors array after calling compact().
+     * 
+     * @throws IllegalStateException
+     */
+    public int[] getCompactedArray() {
+        if (!isCompacted) {
+            throw new IllegalStateException(
+                    "Illegal Invocation of the method before compact()");
+        }
+        return v;
+    }
+
+    /*
+     * Get the number of rows for the compacted array.
+     * 
+     * @throws IllegalStateException
+     */
+    public int getCompactedRows() {
+        if (!isCompacted) {
+            throw new IllegalStateException(
+                    "Illegal Invocation of the method before compact()");
+        }
+        return rows;
+    }
+
+    /*
+     * Get the number of columns for the compacted array.
+     * 
+     * @throws IllegalStateException
+     */
+    public int getCompactedColumns() {
+        if (!isCompacted) {
+            throw new IllegalStateException(
+                    "Illegal Invocation of the method before compact()");
+        }
+        return columns - 2;
+    }
+
+    /*
+     * Call compact(), create a IntTrie with indexes into the compacted
+     * vectors array.
+     */
+    public IntTrie compactToTrieWithRowIndexes() {
+        PVecToTrieCompactHandler compactor = new PVecToTrieCompactHandler();
+        compact(compactor);
+        return compactor.builder.serialize(new DefaultGetFoldedValue(
+                compactor.builder), new DefaultGetFoldingOffset());
+    }
+
+    // inner class implementation of Trie.DataManipulate
+    private static class DefaultGetFoldingOffset implements Trie.DataManipulate {
+        public int getFoldingOffset(int value) {
+            return value;
+        }
+    }
+
+    // inner class implementation of TrieBuilder.DataManipulate
+    private static class DefaultGetFoldedValue implements
+            TrieBuilder.DataManipulate {
+        private IntTrieBuilder builder;
+
+        public DefaultGetFoldedValue(IntTrieBuilder inBuilder) {
+            builder = inBuilder;
+        }
+
+        public int getFoldedValue(int start, int offset) {
+            int initialValue = builder.m_initialValue_; 
+            int limit = start + 0x400;
+            while (start < limit) {
+                boolean[] inBlockZero = new boolean[1];
+                int value = builder.getValue(start, inBlockZero);
+                if (inBlockZero[0]) {
+                    start += TrieBuilder.DATA_BLOCK_LENGTH;
+                } else if (value != initialValue) {
+                    return offset;
+                } else {
+                    ++start;
+                }
+            }
+            return 0;
+        }
+    }
+    
+    public static interface CompactHandler {
+        public void setRowIndexForRange(int start, int end, int rowIndex);
+        public void setRowIndexForInitialValue(int rowIndex);
+        public void setRowIndexForErrorValue(int rowIndex);
+        public void startRealValues(int rowIndex);
+    }
+}
\ No newline at end of file
diff --git a/main/classes/core/src/com/ibm/icu/impl/Punycode.java b/main/classes/core/src/com/ibm/icu/impl/Punycode.java
new file mode 100644
index 0000000..2b9f726
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/Punycode.java
@@ -0,0 +1,476 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2009, 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.StringPrepParseException;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * Ported code from ICU punycode.c 
+ * @author ram
+ */
+
+/* Package Private class */
+public 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 The source of the String Buffer passed.
+     * @param caseFlags The boolean array of case flags.
+     * @return An array of ASCII code points.
+     */
+    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(c, caseFlags[j]) :
+                            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 The source of the string buffer being passed.
+     * @param caseFlags The array of boolean case flags.
+     * @return StringBuffer string.
+     */
+    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/main/classes/core/src/com/ibm/icu/impl/RelativeDateFormat.java b/main/classes/core/src/com/ibm/icu/impl/RelativeDateFormat.java
new file mode 100644
index 0000000..13e7c6c
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/RelativeDateFormat.java
@@ -0,0 +1,258 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2009, 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 The time style for the date and time.
+     * @param dateStyle The date style for the date and time.
+     * @param locale The locale for the date.
+     */
+    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) {
+
+        String dayString = 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 (fTimeStyle == DateFormat.NONE) {
+            if (dayString != null) {
+                toAppendTo.append(dayString);
+            } else if (fDateStyle != DateFormat.NONE) {
+                fDateFormat.format(cal, toAppendTo, fieldPosition);
+            }
+        } else {
+            if (dayString == null && fDateStyle != DateFormat.NONE) {
+                dayString = fDateFormat.format(cal, new StringBuffer(), fieldPosition).toString();
+            }
+            FieldPosition timePos = new FieldPosition(fieldPosition.getField());
+            String timeString = fTimeFormat.format(cal, new StringBuffer(), timePos).toString();
+            fCombinedFormat.format(new Object[] {dayString, timeString}, toAppendTo, new FieldPosition(0));
+            int offset;
+            if (fieldPosition.getEndIndex() > 0 && (offset = toAppendTo.toString().indexOf(dayString)) >= 0 ) {
+                // fieldPosition.getField() was found in dayString, offset start & end based on final position of dayString
+                fieldPosition.setBeginIndex( fieldPosition.getBeginIndex() + offset );
+                fieldPosition.setEndIndex( fieldPosition.getEndIndex() + offset );
+            } else if (timePos.getEndIndex() > 0 && (offset = toAppendTo.toString().indexOf(timeString)) >= 0) {
+                // fieldPosition.getField() was found in timeString, offset start & end based on final position of timeString
+                fieldPosition.setBeginIndex( timePos.getBeginIndex() + offset );
+                fieldPosition.setEndIndex( timePos.getEndIndex() + offset );
+            }
+        }
+        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<URelativeString> datesSet = new TreeSet<URelativeString>(new Comparator<URelativeString>() { 
+            public int compare(URelativeString r1, URelativeString r2) {
+                
+                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 = datesSet.toArray(new URelativeString[0]);
+    }
+    
+    /**
+     * @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.getDateTimePatterns();
+            if (patterns != null && patterns.length >= 9) {
+                int glueIndex = 8;
+                if (patterns.length >= 13)
+                {
+                    switch (fDateStyle)
+                    {
+                        case DateFormat.RELATIVE_FULL:
+                        case DateFormat.FULL:
+                            glueIndex += (DateFormat.FULL + 1);
+                            break;
+                        case DateFormat.RELATIVE_LONG:
+                        case DateFormat.LONG:
+                            glueIndex += (DateFormat.LONG +1);
+                            break;
+                        case DateFormat.RELATIVE_MEDIUM:
+                        case DateFormat.MEDIUM:
+                            glueIndex += (DateFormat.MEDIUM +1);
+                            break;
+                        case DateFormat.RELATIVE_SHORT:
+                        case DateFormat.SHORT:
+                            glueIndex += (DateFormat.SHORT + 1);
+                            break;
+                        default:
+                            break;
+                    }
+                }
+                pattern = patterns[glueIndex];
+            }
+        } catch (MissingResourceException e) {
+            // use default
+        }
+        fCombinedFormat = new MessageFormat(pattern, locale);
+        return fCombinedFormat;
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/ReplaceableUCharacterIterator.java b/main/classes/core/src/com/ibm/icu/impl/ReplaceableUCharacterIterator.java
new file mode 100644
index 0000000..2518bd1
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/ResourceBundleWrapper.java b/main/classes/core/src/com/ibm/icu/impl/ResourceBundleWrapper.java
new file mode 100644
index 0000000..7c3e6c1
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/ResourceBundleWrapper.java
@@ -0,0 +1,219 @@
+/*
+******************************************************************************
+* Copyright (C) 2004-2009, 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<String> 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<String> getKeys(){
+        return keys.elements();
+    }
+    
+    private void initKeysVector(){
+        ResourceBundleWrapper current = this;
+        keys = new Vector<String>();
+        while(current!=null){
+            Enumeration<String> e = current.bundle.getKeys();
+            while(e.hasMoreElements()){
+                String elem = 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<? extends ResourceBundle> cls = cl.loadClass(name).asSubclass(ResourceBundle.class);
+                ResourceBundle bx = 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 = java.security.AccessController.doPrivileged(
+                    new java.security.PrivilegedAction<InputStream>() {
+                        public InputStream 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);
+            }
+
+            b = (ResourceBundleWrapper)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/main/classes/core/src/com/ibm/icu/impl/Row.java b/main/classes/core/src/com/ibm/icu/impl/Row.java
new file mode 100644
index 0000000..e6826c8
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/Row.java
@@ -0,0 +1,184 @@
+/*
+ **********************************************************************
+ * Copyright (c) 2002-2009, Google, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ **********************************************************************
+ * Author: Mark Davis
+ **********************************************************************
+ */
+package com.ibm.icu.impl;
+
+import com.ibm.icu.util.Freezable;
+
+
+@SuppressWarnings("unchecked")
+public class Row<C0, C1, C2, C3, C4> implements java.lang.Comparable, Cloneable,
+                                        Freezable<Row<C0, C1, C2, C3, C4>>{
+    protected Object[] items;
+    protected boolean frozen;
+
+    /**
+     * Convenience Methods
+     */
+    public static <C0, C1> R2<C0,C1> of(C0 p0, C1 p1) {
+        return new R2<C0,C1>(p0,p1);
+    }
+    public static <C0, C1, C2> R3<C0,C1,C2> of(C0 p0, C1 p1, C2 p2) {
+        return new R3<C0,C1,C2>(p0,p1,p2);
+    }
+    public static <C0, C1, C2, C3> R4<C0,C1,C2,C3> of(C0 p0, C1 p1, C2 p2, C3 p3) {
+        return new R4<C0,C1,C2,C3>(p0,p1,p2,p3);
+    }
+    public static <C0, C1, C2, C3, C4> R5<C0,C1,C2,C3,C4> of(C0 p0, C1 p1, C2 p2, C3 p3, C4 p4) {
+        return new R5<C0,C1,C2,C3,C4>(p0,p1,p2,p3,p4);
+    }
+
+    public static class R2<C0, C1> extends Row<C0, C1, C1, C1, C1> {
+        public R2(C0 a, C1 b)  {
+            items = new Object[] {a, b};
+        }
+    }
+    public static class R3<C0, C1, C2> extends Row<C0, C1, C2, C2, C2> {
+        public R3(C0 a, C1 b, C2 c)  {
+            items = new Object[] {a, b, c};
+        }
+    }
+    public static class R4<C0, C1, C2, C3> extends Row<C0, C1, C2, C3, C3> {
+        public R4(C0 a, C1 b, C2 c, C3 d)  {
+            items = new Object[] {a, b, c, d};
+        }
+    }
+    public static class R5<C0, C1, C2, C3, C4> extends Row<C0, C1, C2, C3, C4> {
+        public R5(C0 a, C1 b, C2 c, C3 d, C4 e)  {
+            items = new Object[] {a, b, c, d, e};
+        }
+    }
+
+    public Row<C0, C1, C2, C3, C4> set0(C0 item) {
+        return set(0, item);
+    }
+    public C0 get0() {
+        return (C0) items[0];
+    }
+    public Row<C0, C1, C2, C3, C4> set1(C1 item) {
+        return set(1, item);
+    }
+    public C1 get1() {
+        return (C1) items[1];
+    }
+    public Row<C0, C1, C2, C3, C4> set2(C2 item) {
+        return set(2, item);
+    }
+    public C2 get2() {
+        return (C2) items[2];
+    }
+    public Row<C0, C1, C2, C3, C4> set3(C3 item) {
+        return set(3, item);
+    }
+    public C3 get3() {
+        return (C3) items[3];
+    }
+    public Row<C0, C1, C2, C3, C4> set4(C4 item) {
+        return set(4, item);
+    }
+    public C4 get4() {
+        return (C4) items[4];
+    }
+
+    protected Row<C0, C1, C2, C3, C4> set(int i, Object item) {
+        if (frozen) {
+            throw new UnsupportedOperationException("Attempt to modify frozen object");
+        }
+        items[i] = item;
+        return this;
+    }
+
+    public int hashCode() {
+        int sum = items.length;
+        for (Object item : items) {
+            sum = sum*37 + Utility.checkHash(item);
+        }
+        return sum;
+    }
+
+    public boolean equals(Object other) {
+        try {
+            Row<C0, C1, C2, C3, C4> that = (Row<C0, C1, C2, C3, C4>)other;
+            if (items.length != that.items.length) {
+                return false;
+            }
+            int i = 0;
+            for (Object item : items) {
+                if (!Utility.objectEquals(item, that.items[i++])) {
+                    return false;
+                }
+            }
+            return true;
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
+    public int compareTo(Object other) {
+        int result;
+        Row<C0, C1, C2, C3, C4> that = (Row<C0, C1, C2, C3, C4>)other;
+        result = items.length - that.items.length;
+        if (result != 0) {
+            return result;
+        }
+        int i = 0;
+        for (Object item : items) {
+            result = Utility.checkCompare(((Comparable)item), ((Comparable)that.items[i++]));
+            if (result != 0) {
+                return result;
+            }
+        }
+        return 0;
+    }
+
+    public String toString() {
+        StringBuilder result = new StringBuilder("[");
+        boolean first = true;
+        for (Object item : items) {
+            if (first) {
+                first = false;
+            } else {
+                result.append(", ");
+            }
+            result.append(item);
+        }
+        return result.append("]").toString();
+    }
+
+    public boolean isFrozen() {
+        return frozen;
+    }
+
+    public Row<C0, C1, C2, C3, C4> freeze() {
+        frozen = true;
+        return this;
+    }
+
+    public Object clone() {
+        if (frozen) return this;
+        try {
+            Row<C0, C1, C2, C3, C4> result = (Row<C0, C1, C2, C3, C4>) super.clone();
+            items = items.clone();
+            return result;
+        } catch (CloneNotSupportedException e) {
+            return null;
+        }
+    }
+
+    public Row<C0, C1, C2, C3, C4> cloneAsThawed() {
+        try {
+            Row<C0, C1, C2, C3, C4> result = (Row<C0, C1, C2, C3, C4>) super.clone();
+            items = items.clone();
+            result.frozen = false;
+            return result;
+        } catch (CloneNotSupportedException e) {
+            return null;
+        }
+    }
+}
+
diff --git a/main/classes/core/src/com/ibm/icu/impl/RuleCharacterIterator.java b/main/classes/core/src/com/ibm/icu/impl/RuleCharacterIterator.java
new file mode 100644
index 0000000..dcde50b
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/SimpleCache.java b/main/classes/core/src/com/ibm/icu/impl/SimpleCache.java
new file mode 100644
index 0000000..8511393
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/SimpleCache.java
@@ -0,0 +1,73 @@
+/*
+ ****************************************************************************
+ * Copyright (c) 2007-2009 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<K, V> implements ICUCache<K, V> {
+    private static final int DEFAULT_CAPACITY = 16;
+
+    private Reference<Map<K, V>> 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 V get(Object key) {
+        Reference<Map<K, V>> ref = cacheRef;
+        if (ref != null) {
+            Map<K, V> map = ref.get();
+            if (map != null) {
+                return map.get(key);
+            }
+        }
+        return null;
+    }
+
+    public void put(K key, V value) {
+        Reference<Map<K, V>> ref = cacheRef;
+        Map<K, V> map = null;
+        if (ref != null) {
+            map = ref.get();
+        }
+        if (map == null) {
+            map = Collections.synchronizedMap(new HashMap<K, V>(capacity));
+            if (type == ICUCache.WEAK) {
+                ref = new WeakReference<Map<K, V>>(map);
+            } else {
+                ref = new SoftReference<Map<K, V>>(map);
+            }
+            cacheRef = ref;
+        }
+        map.put(key, value);
+    }
+
+    public void clear() {
+        cacheRef = null;
+    }
+
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/SortedSetRelation.java b/main/classes/core/src/com/ibm/icu/impl/SortedSetRelation.java
new file mode 100644
index 0000000..01a716d
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/SortedSetRelation.java
@@ -0,0 +1,180 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2009, 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 <T extends Object & Comparable<? super T>> boolean hasRelation(SortedSet<T> a, int allow, SortedSet<T> 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<? extends T> ait = a.iterator();
+        Iterator<? extends T> bit = b.iterator();
+        
+        T aa = ait.next();
+        T bb = 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 = ait.next();
+                bb = bit.next();
+            } else if (comp < 0) {
+                if (!anb) return false;
+                if (!ait.hasNext()) {
+                    return bna;
+                }
+                aa = ait.next(); 
+            } else  {
+                if (!bna) return false;
+                if (!bit.hasNext()) {
+                    return anb;
+                }
+                bb = 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 <T extends Object & Comparable<? super T>> SortedSet<? extends T> doOperation(SortedSet<T> a, int relation, SortedSet<T> b) {
+        // TODO: optimize this as above
+        TreeSet<? extends T> 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<T>(b);
+                temp.removeAll(a);
+                a.removeAll(b);
+                a.addAll(temp);
+                return a;
+            case B_REMOVEALL:
+                temp = new TreeSet<T>(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/main/classes/core/src/com/ibm/icu/impl/StringPrepDataReader.java b/main/classes/core/src/com/ibm/icu/impl/StringPrepDataReader.java
new file mode 100644
index 0000000..4634278
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/StringUCharacterIterator.java b/main/classes/core/src/com/ibm/icu/impl/StringUCharacterIterator.java
new file mode 100644
index 0000000..9fa44a8
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/TextTrieMap.java b/main/classes/core/src/com/ibm/icu/impl/TextTrieMap.java
new file mode 100644
index 0000000..9a172a2
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/TextTrieMap.java
@@ -0,0 +1,275 @@
+/*
+ * ********************************************************************************
+ * 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.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<V> {
+    /**
+     * 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, V 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<V> 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<V> get(String text, int start) {
+        LongestMatchHandler<V> handler = new LongestMatchHandler<V>();
+        find(text, start, handler);
+        return handler.getMatches();
+    }
+
+    public void find(String text, ResultHandler<V> handler) {
+        find(text, 0, handler);
+    }
+    
+    public void find(String text, int start, ResultHandler<V> 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<V> handler) {
+        Iterator<V> itr = node.iterator();
+        if (itr != null) {
+            if (!handler.handlePrefixMatch(index - start, itr)) {
+                return;
+            }
+        }
+        if (index < text.length()) {
+            List<CharacterNode> 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 = 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<CharacterNode> children;
+        List<V> 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(V obj) {
+            if (objlist == null) {
+                objlist = new LinkedList<V>();
+            }
+            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<V> 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>();
+                CharacterNode newNode = new CharacterNode(ch);
+                children.add(newNode);
+                return newNode;
+            }
+            CharacterNode node = null;
+            for (int i = 0; i < children.size(); i++) {
+                CharacterNode cur = 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<CharacterNode> getChildNodes() {
+            return children;
+        }
+    }
+
+    /**
+     * Callback handler for processing prefix matches used by
+     * find method.
+     */
+    public interface ResultHandler<V> {
+        /**
+         * 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<V> values);
+    }
+
+    private static class LongestMatchHandler<V> implements ResultHandler<V> {
+        private Iterator<V> matches = null;
+        private int length = 0;
+
+        public boolean handlePrefixMatch(int matchLength, Iterator<V> values) {
+            if (matchLength > length) {
+                length = matchLength;
+                matches = values;
+            }
+            return true;
+        }
+
+        public Iterator<V> getMatches() {
+            return matches;
+        }
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/TimeZoneAdapter.java b/main/classes/core/src/com/ibm/icu/impl/TimeZoneAdapter.java
new file mode 100644
index 0000000..bfe9812
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/Trie.java b/main/classes/core/src/com/ibm/icu/impl/Trie.java
new file mode 100644
index 0000000..252d26c
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/TrieBuilder.java b/main/classes/core/src/com/ibm/icu/impl/TrieBuilder.java
new file mode 100644
index 0000000..311f71a
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/TrieIterator.java b/main/classes/core/src/com/ibm/icu/impl/TrieIterator.java
new file mode 100644
index 0000000..a678653
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/TrieIterator.java
@@ -0,0 +1,532 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2009, International Business Machines Corporation and   *
+* others. All Rights Reserved.                                               *
+******************************************************************************
+*/
+
+package com.ibm.icu.impl;
+
+import java.util.NoSuchElementException;
+
+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
+ * @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/main/classes/core/src/com/ibm/icu/impl/UBiDiProps.java b/main/classes/core/src/com/ibm/icu/impl/UBiDiProps.java
new file mode 100644
index 0000000..0b128d2
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/UCaseProps.java b/main/classes/core/src/com/ibm/icu/impl/UCaseProps.java
new file mode 100644
index 0000000..c599173
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/UCaseProps.java
@@ -0,0 +1,1401 @@
+/*
+*******************************************************************************
+*
+*   Copyright (C) 2004-2009, 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 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/main/classes/core/src/com/ibm/icu/impl/UCharArrayIterator.java b/main/classes/core/src/com/ibm/icu/impl/UCharArrayIterator.java
new file mode 100644
index 0000000..84b0b10
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/UCharacterIteratorWrapper.java b/main/classes/core/src/com/ibm/icu/impl/UCharacterIteratorWrapper.java
new file mode 100644
index 0000000..9ca4900
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/UCharacterName.java b/main/classes/core/src/com/ibm/icu/impl/UCharacterName.java
new file mode 100644
index 0000000..6823fea
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/UCharacterName.java
@@ -0,0 +1,1669 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2009, 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 The codepoint index.
+     * @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 The codepoint value.
+     * @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 The codepoint value.
+     * @return offset to a group
+     */
+    public static int getGroupOffset(int codepoint)
+    {
+        return codepoint & GROUP_MASK_;
+    }
+
+    /**
+     * Gets the minimum codepoint of a group
+     * @param codepoint The codepoint value.
+     * @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 The codepoint value.
+     * @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
+                str.append(Utility.hex(ch,m_variant_));
+                    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/main/classes/core/src/com/ibm/icu/impl/UCharacterNameChoice.java b/main/classes/core/src/com/ibm/icu/impl/UCharacterNameChoice.java
new file mode 100644
index 0000000..097f150
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/UCharacterNameReader.java b/main/classes/core/src/com/ibm/icu/impl/UCharacterNameReader.java
new file mode 100644
index 0000000..2dd9aaf
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/UCharacterProperty.java b/main/classes/core/src/com/ibm/icu/impl/UCharacterProperty.java
new file mode 100644
index 0000000..a8ee0ea
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/UCharacterProperty.java
@@ -0,0 +1,1164 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2009, 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 a little 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 The column index.
+     * @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/main/classes/core/src/com/ibm/icu/impl/UCharacterPropertyReader.java b/main/classes/core/src/com/ibm/icu/impl/UCharacterPropertyReader.java
new file mode 100644
index 0000000..abe337b
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/UCharacterUtility.java b/main/classes/core/src/com/ibm/icu/impl/UCharacterUtility.java
new file mode 100644
index 0000000..dc10e06
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/UPropertyAliases.java b/main/classes/core/src/com/ibm/icu/impl/UPropertyAliases.java
new file mode 100644
index 0000000..584360b
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/UPropertyAliases.java
@@ -0,0 +1,672 @@
+/*
+ **********************************************************************
+ * Copyright (c) 2002-2009, 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 java.util.MissingResourceException;
+
+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
+
+    public static UPropertyAliases INSTANCE_;
+
+    public static synchronized UPropertyAliases getInstance() {
+        if (INSTANCE_ == null) {
+            try {
+                INSTANCE_ = new UPropertyAliases();
+            } catch(IOException e){
+                ///CLOVER:OFF
+                throw new MissingResourceException("Could not construct UPropertyAliases. Missing pnames.icu","","");
+                ///CLOVER:ON
+            }
+        }
+        return INSTANCE_;
+    }
+
+    /**
+     * 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.
+     * If the property name is not known, this method returns
+     * UProperty.UNDEFINED.
+     */
+    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 IllegalIcuArgumentException("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 IllegalIcuArgumentException("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];
+            }
+            return UProperty.UNDEFINED;
+        }
+
+        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 IllegalIcuArgumentException("Invalid name choice");
+        }
+        while (nameChoice-- > 0) {
+            if (nameGroupPool[nameGroupIndex++] < 0) {
+                throw new IllegalIcuArgumentException("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/main/classes/core/src/com/ibm/icu/impl/URLHandler.java b/main/classes/core/src/com/ibm/icu/impl/URLHandler.java
new file mode 100644
index 0000000..46c1c87
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/URLHandler.java
@@ -0,0 +1,244 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 2005-2009, 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.URISyntaxException;
+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<String, Method> handlers;
+    
+    private static final boolean DEBUG = ICUDebug.enabled("URLHandler");
+    
+    static {
+        Map<String, Method> 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<String, Method>();
+                        }
+                        
+                        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 = 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;
+
+        FileURLHandler(URL url) {
+            try {
+                file = new File(url.toURI());
+            } catch (URISyntaxException use) {
+                // fall through
+            }
+            if (file == null || !file.exists()) {
+                if (DEBUG) System.err.println("file does not exist - " + url.toString());
+                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<JarEntry> entries = jarFile.entries();
+                
+                while (entries.hasMoreElements()) {
+                    JarEntry entry = 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/main/classes/core/src/com/ibm/icu/impl/USerializedSet.java b/main/classes/core/src/com/ibm/icu/impl/USerializedSet.java
new file mode 100644
index 0000000..6ec9983
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/USerializedSet.java
@@ -0,0 +1,187 @@
+/*
+ *******************************************************************************
+ *   Copyright (C) 2002-2009, 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 ((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 (((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/main/classes/core/src/com/ibm/icu/impl/UnicodeRegex.java b/main/classes/core/src/com/ibm/icu/impl/UnicodeRegex.java
new file mode 100644
index 0000000..29d6e0a
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/UnicodeRegex.java
@@ -0,0 +1,387 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, Google, International Business Machines Corporation and *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.text.ParsePosition;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.regex.Pattern;
+
+import com.ibm.icu.text.StringTransform;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.util.Freezable;
+
+/**
+ * Contains utilities to supplement the JDK Regex, since it doesn't handle
+ * Unicode well.
+ * 
+ * @author markdavis
+ */
+public class UnicodeRegex implements Cloneable, Freezable<UnicodeRegex>, StringTransform {
+    // Note: we don't currently have any state, but intend to in the future,
+    // particularly for the regex style supported.
+
+    /**
+     * Adds full Unicode property support, with the latest version of Unicode,
+     * to Java Regex, bringing it up to Level 1 (see
+     * http://www.unicode.org/reports/tr18/). It does this by preprocessing the
+     * regex pattern string and interpreting the character classes (\p{...},
+     * \P{...}, [...]) according to their syntax and meaning in UnicodeSet. With
+     * this utility, Java regex expressions can be updated to work with the
+     * latest version of Unicode, and with all Unicode properties. Note that the
+     * UnicodeSet syntax has not yet, however, been updated to be completely
+     * consistent with Java regex, so be careful of the differences.
+     * <p>Not thread-safe; create a separate copy for different threads.
+     * <p>In the future, we may extend this to support other regex packages.
+     * 
+     * @regex A modified Java regex pattern, as in the input to
+     *        Pattern.compile(), except that all "character classes" are
+     *        processed as if they were UnicodeSet patterns. Example:
+     *        "abc[:bc=N:]. See UnicodeSet for the differences in syntax.
+     * @return A processed Java regex pattern, suitable for input to
+     *         Pattern.compile().
+     */
+    public String transform(String regex) {
+        StringBuffer result = new StringBuffer();
+        UnicodeSet temp = new UnicodeSet();
+        ParsePosition pos = new ParsePosition(0);
+        int state = 0; // 1 = after \
+
+        // We add each character unmodified to the output, unless we have a
+        // UnicodeSet. Note that we don't worry about supplementary characters,
+        // since none of the syntax uses them.
+
+        for (int i = 0; i < regex.length(); ++i) {
+            // look for UnicodeSets, allowing for quoting with \ and \Q
+            char ch = regex.charAt(i);
+            switch (state) {
+            case 0: // we only care about \, and '['.
+                if (ch == '\\') {
+                    if (UnicodeSet.resemblesPattern(regex, i)) {
+                        // should only happen with \p
+                        i = processSet(regex, i, result, temp, pos);
+                        continue;
+                    }
+                    state = 1;
+                } else if (ch == '[') {
+                    // if we have what looks like a UnicodeSet
+                    if (UnicodeSet.resemblesPattern(regex, i)) {
+                        i = processSet(regex, i, result, temp, pos);
+                        continue;
+                    }
+                }
+                break;
+
+            case 1: // we are after a \
+                if (ch == 'Q') {
+                    state = 1;
+                } else {
+                    state = 0;
+                }
+                break;
+
+            case 2: // we are in a \Q...
+                if (ch == '\\') {
+                    state = 3;
+                }
+                break;
+
+            case 3: // we are in at \Q...\
+                if (ch == 'E') {
+                    state = 0;
+                }
+                state = 2;
+                break;
+            }
+            result.append(ch);
+        }
+        return result.toString();
+    }
+
+    /**
+     * Convenience static function, using standard parameters.
+     * @param regex as in process()
+     * @return processed regex pattern, as in process()
+     */
+    public static String fix(String regex) {
+        return STANDARD.transform(regex);
+    }
+
+    /**
+     * Compile a regex string, after processing by fix(...).
+     * 
+     * @param regex Raw regex pattern, as in fix(...).
+     * @return Pattern
+     */
+    public static Pattern compile(String regex) {
+        return Pattern.compile(STANDARD.transform(regex));
+    }
+
+    /**
+     * Compile a regex string, after processing by fix(...).
+     * 
+     * @param regex Raw regex pattern, as in fix(...).
+     * @return Pattern
+     */
+    public static Pattern compile(String regex, int options) {
+        return Pattern.compile(STANDARD.transform(regex), options);
+    }
+
+    /**
+     * Compile a composed string from a set of BNF lines; see the List version for more information.
+     * 
+     * @param bnfLines Series of BNF lines.
+     * @return Pattern
+     */
+    public String compileBnf(String bnfLines) {
+        return compileBnf(Arrays.asList(bnfLines.split("\\r\\n?|\\n")));
+    }
+
+    /**
+     * Compile a composed string from a set of BNF lines, such as for composing a regex
+     * expression. The lines can be in any order, but there must not be any
+     * cycles. The result can be used as input for fix().
+     * <p>
+     * Example:
+     * <pre>
+     * uri = (?: (scheme) \\:)? (host) (?: \\? (query))? (?: \\u0023 (fragment))?;
+     * scheme = reserved+;
+     * host = // reserved+;
+     * query = [\\=reserved]+;
+     * fragment = reserved+;
+     * reserved = [[:ascii:][:alphabetic:]];
+     * </pre>
+     * <p>
+     * Caveats: at this point the parsing is simple; for example, # cannot be
+     * quoted (use \\u0023); you can set it to null to disable. 
+     * The equality sign and a few others can be reset with
+     * setBnfX().
+     * 
+     * @param lines Series of lines that represent a BNF expression. The lines contain
+     *          a series of statements that of the form x=y;. A statement can take
+     *          multiple lines, but there can't be multiple statements on a line.
+     *          A hash quotes to the end of the line.
+     * @return Pattern
+     */
+    public String compileBnf(List<String> lines) {
+        Map<String, String> variables = getVariables(lines);
+        Set<String> unused = new LinkedHashSet<String>(variables.keySet());
+        // brute force replacement; do twice to allow for different order
+        // later on can optimize
+        for (int i = 0; i < 2; ++i) {
+            for (Iterator<String> it = variables.keySet().iterator(); it.hasNext();) {
+                String variable = it.next();
+                String definition = variables.get(variable);
+                for (Iterator<String> it2 = variables.keySet().iterator(); it2.hasNext();) {
+                    String variable2 = it2.next();
+                    if (variable.equals(variable2)) continue;
+                    String definition2 = variables.get(variable2);
+                    String altered2 = definition2.replace(variable, definition);
+                    if (!altered2.equals(definition2)) {
+                        unused.remove(variable);
+                        variables.put(variable2, altered2);
+                        if (log != null) {
+                            try {
+                                log.append(variable2 + "=" + altered2 + ";");
+                            } catch (IOException e) {
+                                throw (IllegalArgumentException) new IllegalArgumentException().initCause(e);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        if (unused.size() != 1) {
+            throw new IllegalArgumentException("Not a single root: " + unused);
+        }
+        return variables.get(unused.iterator().next());
+    }
+
+    public String getBnfCommentString() {
+        return bnfCommentString;
+    }
+
+    public void setBnfCommentString(String bnfCommentString) {
+        this.bnfCommentString = bnfCommentString;
+    }
+
+    public String getBnfVariableInfix() {
+        return bnfVariableInfix;
+    }
+
+    public void setBnfVariableInfix(String bnfVariableInfix) {
+        this.bnfVariableInfix = bnfVariableInfix;
+    }
+
+    public String getBnfLineSeparator() {
+        return bnfLineSeparator;
+    }
+
+    public void setBnfLineSeparator(String bnfLineSeparator) {
+        this.bnfLineSeparator = bnfLineSeparator;
+    }
+
+    /**
+     * Utility for loading lines from a file.
+     * @param result The result of the appended lines.
+     * @param file The file to have an input stream.
+     * @param encoding if null, then UTF-8
+     * @return filled list
+     * @throws IOException If there were problems opening the file for input stream.
+     */
+    public static List<String> appendLines(List<String> result, String file, String encoding) throws IOException {
+        return appendLines(result, new FileInputStream(file), encoding);
+    }
+
+    /**
+     * Utility for loading lines from a UTF8 file.
+     * @param result The result of the appended lines.
+     * @param inputStream The input stream.
+     * @param encoding if null, then UTF-8
+     * @return filled list
+     * @throws IOException  If there were problems opening the input stream for reading.
+     */
+    public static List<String> appendLines(List<String> result, InputStream inputStream, String encoding)
+            throws UnsupportedEncodingException, IOException {
+        BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, encoding == null ? "UTF-8" : encoding));
+        while (true) {
+            String line = in.readLine();
+            if (line == null) break;
+            result.add(line);
+        }
+        return result;
+    }
+    
+    
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.Freezable#cloneAsThawed()
+     */
+    public UnicodeRegex cloneAsThawed() {
+        // TODO Auto-generated method stub
+        try {
+            return (UnicodeRegex)clone();
+        } catch (CloneNotSupportedException e) {
+            throw new IllegalArgumentException(); // should never happen
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.Freezable#freeze()
+     */
+    public UnicodeRegex freeze() {
+        // no action needed now.
+        return this;
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.util.Freezable#isFrozen()
+     */
+    public boolean isFrozen() {
+        // at this point, always true
+        return true;
+    }
+
+    // ===== PRIVATES =====
+
+    private int processSet(String regex, int i, StringBuffer result, UnicodeSet temp, ParsePosition pos) {
+        try {
+            pos.setIndex(i);
+            UnicodeSet x = temp.clear().applyPattern(regex, pos, null, 0);
+            x.complement().complement(); // hack to fix toPattern
+            result.append(x.toPattern(false));
+            i = pos.getIndex() - 1; // allow for the loop increment
+            return i;
+        } catch (Exception e) {
+            throw (IllegalArgumentException) new IllegalArgumentException("Error in " + regex).initCause(e);
+        }
+    }
+
+    private static UnicodeRegex STANDARD = new UnicodeRegex();
+    private String bnfCommentString = "#";
+    private String bnfVariableInfix = "=";
+    private String bnfLineSeparator = "\n";
+    private Appendable log = null;
+
+    private Comparator<Object> LongestFirst = new Comparator<Object>() {
+        public int compare(Object obj0, Object obj1) {
+            String arg0 = obj0.toString();
+            String arg1 = obj1.toString();
+            int len0 = arg0.length();
+            int len1 = arg1.length();
+            if (len0 != len1) return len1 - len0;
+            return arg0.compareTo(arg1);
+        }
+    };
+
+    private Map<String, String> getVariables(List<String> lines) {
+        Map<String, String> variables = new TreeMap<String, String>(LongestFirst);
+        String variable = null;
+        StringBuffer definition = new StringBuffer();
+        int count = 0;
+        for (Iterator<String> it = lines.iterator(); it.hasNext();) {
+            String line = it.next();
+            ++count;
+            // remove initial bom, comments
+            if (line.length() == 0) continue;
+            if (line.charAt(0) == '\uFEFF') line = line.substring(1);
+
+            if (bnfCommentString != null) {
+                int hashPos = line.indexOf(bnfCommentString);
+                if (hashPos >= 0) line = line.substring(0, hashPos);
+            }
+            String trimline = line.trim();
+            if (trimline.length() == 0) continue;
+
+            // String[] lineParts = line.split(";");
+            String linePart = line; // lineParts[i]; // .trim().replace("\\s+", " ");
+            if (linePart.trim().length() == 0) continue;
+            boolean terminated = trimline.endsWith(";");
+            if (terminated) {
+                linePart = linePart.substring(0,linePart.lastIndexOf(';'));
+            }
+            int equalsPos = linePart.indexOf(bnfVariableInfix);
+            if (equalsPos >= 0) {
+                if (variable != null) {
+                    throw new IllegalArgumentException("Missing ';' before " + count + ") " + line);
+                }
+                variable = linePart.substring(0,equalsPos).trim();
+                if (variables.containsKey(variable)) {
+                    throw new IllegalArgumentException("Duplicate variable definition in " + line);
+                }
+                definition.append(linePart.substring(equalsPos+1).trim());
+            } else { // no equals, so
+                if (variable == null) {
+                    throw new IllegalArgumentException("Missing '=' at " + count + ") " + line);
+                }
+                definition.append(bnfLineSeparator).append(linePart);
+            }
+            // we are terminated if i is not at the end, or the line ends with a ;
+            if (terminated) {
+                variables.put(variable, definition.toString());
+                variable = null; // signal we have no variable
+                definition.setLength(0);
+            }
+        }
+        if (variable != null) {
+            throw new IllegalArgumentException("Missing ';' at end");
+        }
+        return variables;
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/Utility.java b/main/classes/core/src/com/ibm/icu/impl/Utility.java
new file mode 100644
index 0000000..64e45b5
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/Utility.java
@@ -0,0 +1,1832 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.regex.Pattern;
+
+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 a, Object b) {
+        return a == null ? 
+                b == null ? true : false : 
+                    b == null ? false : a.equals(b);
+    }
+    
+    /**
+     * Convenience utility. Does null checks on objects, then calls compare.
+     */
+    public static <T extends Comparable<T>> int checkCompare(T a, T b) {
+        return a == null ? 
+                b == null ? 0 : -1 : 
+                    b == null ? 1 : a.compareTo(b);
+      }
+
+    /**
+     * Convenience utility. Does null checks on object, then calls hashCode.
+     */
+    public static int checkHash(Object a) {
+        return a == null ? 0 : a.hashCode();
+      }
+    
+    /**
+     * 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) {
+        StringBuilder buffer = new StringBuilder();
+
+        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) {
+        StringBuilder buffer = new StringBuilder();
+        // 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) {
+        StringBuilder buffer = new StringBuilder();
+        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) {
+        StringBuilder buffer = new StringBuilder();
+        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 <T extends Appendable> void encodeRun(T 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 <T extends Appendable> void appendInt(T buffer, int value) {
+        try {
+            buffer.append((char)(value >>> 16));
+            buffer.append((char)(value & 0xFFFF));
+        } catch (IOException e) {
+            throw new IllegalIcuArgumentException(e);
+        }
+    }
+
+    /**
+     * Encode a run, possibly a degenerate run (of < 4 values).
+     * @param length The length of the run; must be > 0 && <= 0xFFFF.
+     */
+    private static final <T extends Appendable> void encodeRun(T buffer, short value, int length) {
+        try {
+            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
+            }
+        } catch (IOException e) {
+            throw new IllegalIcuArgumentException(e);
+        }
+    }
+
+    /**
+     * Encode a run, possibly a degenerate run (of < 4 values).
+     * @param length The length of the run; must be > 0 && <= 0xFF.
+     */
+    private static final <T extends Appendable> void encodeRun(T 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 Appendable, 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 <T extends Appendable> void appendEncodedByte(T buffer, byte value,
+            byte[] state) {
+        try {
+            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;
+            }
+        } catch (IOException e) {
+            throw new IllegalIcuArgumentException(e);
+        }
+    }
+
+    /**
+     * 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) {
+        StringBuilder buffer = new StringBuilder();
+        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) {
+        StringBuilder buffer = new StringBuilder();
+        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) {
+        StringBuilder buf = new StringBuilder();
+        for (int i=0; i<s.length(); ) {
+            int c = Character.codePointAt(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");
+                buf.append(hex(c, four ? 4 : 8));
+            }
+        }
+        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 = Character.codePointAt(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) {
+        StringBuilder buf = new StringBuilder();
+        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())));
+                }
+                buf.appendCodePoint(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) {
+        StringBuilder buf = new StringBuilder();
+        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 {
+                    buf.appendCodePoint(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(long ch) {
+        return hex(ch, 4);
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * Convert a string to comma-separated groups of 4 hex uppercase
+     * digits.  E.g., hex('ab') => "0041,0042".
+     */
+    public static String hex(CharSequence s) {
+        return hex(s, 4, ",", false, new StringBuilder()).toString();
+    }
+
+    /**
+     * Convert a string to separated groups of hex uppercase
+     * digits.  E.g., hex('ab'...) => "0041,0042".  Append the output
+     * to the given Appendable.
+     */
+    public static <S extends CharSequence, U extends CharSequence, T extends Appendable> T hex(S s, int width, U separator, boolean useCodePoints, T result) {
+        try {
+            if (useCodePoints) {
+                int cp;
+                for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+                    cp = Character.codePointAt(s, i);
+                    if (i != 0) {
+                        result.append(separator);
+                    }
+                    result.append(hex(cp,width));
+                }
+            } else {
+                for (int i = 0; i < s.length(); ++i) {
+                    if (i != 0) {
+                        result.append(separator);
+                    }
+                    result.append(hex(s.charAt(i),width));
+                }
+            }
+            return result;
+        } catch (IOException e) {
+            throw new IllegalIcuArgumentException(e);
+        }
+    }
+
+
+    /**
+     * Convert a string to comma-separated groups of 4 hex uppercase
+     * digits.  E.g., hex('ab') => "0041,0042".
+     */
+    public static <S extends CharSequence> String hex(S s, int width, S separator) {
+        return hex(s, width, separator, true, new StringBuilder()).toString();
+    }   
+
+    /**
+     * 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<String> output = new ArrayList<String>();
+        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 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 = Character.codePointAt(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) {
+        StringBuilder buf = new StringBuilder();
+        for (int i=0; i<str.length(); ) {
+            int ch = Character.codePointAt(str, i);
+            i += UTF16.getCharCount(ch);
+            if (UCharacterProperty.isRuleWhiteSpace(ch)) {
+                continue;
+            }
+            buf.appendCodePoint(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
+     */
+    @SuppressWarnings("fallthrough")
+    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 = Character.codePointAt(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])));
+        StringBuilder buf = new StringBuilder();
+        int p = pos[0];
+        while (p < str.length()) {
+            int ch = Character.codePointAt(str, p);
+            if (buf.length() == 0) {
+                if (UCharacter.isUnicodeIdentifierStart(ch)) {
+                    buf.appendCodePoint(ch);
+                } else {
+                    return null;
+                }
+            } else {
+                if (UCharacter.isUnicodeIdentifierPart(ch)) {
+                    buf.appendCodePoint(ch);
+                } else {
+                    break;
+                }
+            }
+            p += UTF16.getCharCount(ch);
+        }
+        pos[0] = p;
+        return buf.toString();
+    }
+
+    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 the digits of a positive integer to the given
+     * <code>Appendable</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>Appendable</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 <T extends Appendable> void recursiveAppendNumber(T result, int n,
+            int radix, int minDigits)
+    {
+        try {
+            int digit = n % radix;
+
+            if (n >= radix || minDigits > 1) {
+                recursiveAppendNumber(result, n / radix, radix, minDigits - 1);
+            }
+            result.append(DIGITS[digit]);
+        } catch (IOException e) {
+            throw new IllegalIcuArgumentException(e);
+        }
+    }
+
+    /**
+     * Append a number to the given Appendable 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 <T extends Appendable> T appendNumber(T result, int n,
+            int radix, int minDigits)
+    {
+        try {
+            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;
+        } catch (IOException e) {
+            throw new IllegalIcuArgumentException(e);
+        }
+
+    }
+
+    /**
+     * 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 = Character.codePointAt(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) {
+        //0x20 = 32 and 0x7E = 126
+        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 <T extends Appendable> boolean escapeUnprintable(T result, int c) {
+        try {
+            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;
+        } catch (IOException e) {
+            throw new IllegalIcuArgumentException(e);
+        }
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * 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)) {
+                    rule.appendCodePoint(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)) {
+            quoteBuf.appendCodePoint(c);
+            // Double ' within a quote
+            if (c == APOSTROPHE) {
+                quoteBuf.append((char)c);
+            }
+        }
+
+        // Otherwise just append
+        else {
+            rule.appendCodePoint(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
+        StringBuilder result = new StringBuilder(source.length);
+        for(int i=0; i<source.length; i++){
+            result.appendCodePoint(source[i]);
+        }
+        return result.toString();
+    }
+
+
+    /**
+     * Utility to duplicate a string count times
+     * @param s String to be duplicated.
+     * @param count Number of times to duplicate a string.
+     */
+    public static String repeat(String s, int count) {
+        if (count <= 0) return "";
+        if (count == 1) return s;
+        StringBuilder result = new StringBuilder();
+        for (int i = 0; i < count; ++i) {
+            result.append(s);
+        }
+        return result.toString();
+    }
+    
+    public static String[] splitString(String src, String target) {
+        return src.split("\\Q" + target + "\\E");
+    }
+
+    /**
+     * Split the string at runs of ascii whitespace characters.
+     */
+    public static String[] splitWhitespace(String src) {
+        return src.split("\\s+");
+    }
+
+    /**
+     * Parse a list of hex numbers and return a string
+     * @param string String of hex numbers.
+     * @param minLength Minimal length.
+     * @param separator Seperator.
+     * @return A string from hex numbers.
+     */
+    public static String fromHex(String string, int minLength, String separator) {
+        return fromHex(string, minLength, Pattern.compile(separator != null ? separator : "\\s+"));
+    }
+    
+    /**
+     * Parse a list of hex numbers and return a string
+     * @param string String of hex numbers.
+     * @param minLength Minimal length.
+     * @param separator Seperator.
+     * @return A string from hex numbers.
+     */
+    public static String fromHex(String string, int minLength, Pattern separator) {
+        StringBuilder buffer = new StringBuilder();
+        String[] parts = separator.split(string);
+        for (String part : parts) {
+            if (part.length() < minLength) {
+                throw new IllegalArgumentException("code point too short: " + part);
+            }
+            int cp = Integer.parseInt(part, 16);
+            buffer.appendCodePoint(cp);
+        }
+        return buffer.toString();
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/ZoneMeta.java b/main/classes/core/src/com/ibm/icu/impl/ZoneMeta.java
new file mode 100644
index 0000000..f364671
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/ZoneMeta.java
@@ -0,0 +1,1103 @@
+/*
+**********************************************************************
+* Copyright (c) 2003-2009 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.ArrayList;
+import java.util.Collections;
+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 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){
+        if(!getOlsonMeta()){
+            return EMPTY;
+        }
+        ArrayList<String> vector = new ArrayList<String>(OLSON_ZONE_COUNT);
+        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 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<String, String[]> m = new HashMap<String, String[]>();
+            Set<String> s = new HashSet<String>();
+            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 = 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 canonicalMap.get(id);
+    }
+
+    private static Map<String, String[]> canonicalMap = null;
+    private static Set<String> 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 = (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<String, TimeZone> zoneCache = new SimpleCache<String, TimeZone>();
+    /**
+     * 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 = 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[+|-]hh:mm[: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);
+            zid.append(':');
+            if (min < 10) {
+                zid.append('0');
+            }
+            zid.append(min);
+
+            if (sec != 0) {
+                // Optional second field
+                zid.append(':');
+                if (sec < 10) {
+                    zid.append('0');
+                }
+                zid.append(sec);
+            }
+        }
+        return zid.toString();
+    }
+
+    private static SoftReference<Map<String, List<OlsonToMetaMappingEntry>>> OLSON_TO_META_REF;
+    private static SoftReference<Map<String, List<MetaToOlsonMappingEntry>>> META_TO_OLSON_REF;
+
+    static class OlsonToMetaMappingEntry {
+        String mzid;
+        long from;
+        long to;
+    }
+
+    private static class MetaToOlsonMappingEntry {
+        String id;
+        String territory;
+    }
+
+    static Map<String, List<OlsonToMetaMappingEntry>> getOlsonToMetaMap() {
+        Map<String, List<OlsonToMetaMappingEntry>> olsonToMeta = null;
+        synchronized(ZoneMeta.class) {
+            if (OLSON_TO_META_REF != null) {
+                olsonToMeta = OLSON_TO_META_REF.get();
+            }
+            if (olsonToMeta == null) {
+                olsonToMeta = createOlsonToMetaMap();
+                if (olsonToMeta == null) {
+                    // We need to return non-null Map to avoid disaster
+                    olsonToMeta = Collections.emptyMap();
+                }
+                OLSON_TO_META_REF = new SoftReference<Map<String, List<OlsonToMetaMappingEntry>>>(olsonToMeta);
+            }
+        }
+        return olsonToMeta;
+    }
+
+    /*
+     * Create olson tzid to metazone mappings from metazoneInfo.res (3.8.1 or later)
+     */
+    private static Map<String, List<OlsonToMetaMappingEntry>> createOlsonToMetaMap() {
+        // Create olson id to metazone mapping table
+        Map<String, List<OlsonToMetaMappingEntry>> 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<OlsonToMetaMappingEntry> mzMappings = new LinkedList<OlsonToMetaMappingEntry>();
+                    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<String, List<OlsonToMetaMappingEntry>>();
+                        }
+                        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<String, List<OlsonToMetaMappingEntry>> olsonToMeta = getOlsonToMetaMap();
+        List<OlsonToMetaMappingEntry> mappings = 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 = olsonToMeta.get(canonicalID);
+            }
+        }
+        if (mappings != null) {
+            for (int i = 0; i < mappings.size(); i++) {
+                OlsonToMetaMappingEntry mzm = mappings.get(i);
+                if (date >= mzm.from && date < mzm.to) {
+                    mzid = mzm.mzid;
+                    break;
+                }
+            }
+        }
+        return mzid;
+    }
+
+    private static Map<String, List<MetaToOlsonMappingEntry>> getMetaToOlsonMap() {
+        Map<String, List<MetaToOlsonMappingEntry>> metaToOlson = null;
+        synchronized(ZoneMeta.class) {
+            if (META_TO_OLSON_REF != null) {
+                metaToOlson = META_TO_OLSON_REF.get();
+            }
+            if (metaToOlson == null) {
+                metaToOlson = new HashMap<String, List<MetaToOlsonMappingEntry>>();
+                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<String> mzenum = metazonesBundle.getKeys();
+                    while (mzenum.hasMoreElements()) {
+                        String mzkey = 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<MetaToOlsonMappingEntry> mappings = metaToOlson.get(mzid);
+                                if (mappings == null) {
+                                    mappings = new LinkedList<MetaToOlsonMappingEntry>();
+                                    metaToOlson.put(mzid, mappings);
+                                }
+                                MetaToOlsonMappingEntry olsonmap = new MetaToOlsonMappingEntry();
+                                olsonmap.id = tzid;
+                                olsonmap.territory = territory;
+                                mappings.add(olsonmap);
+                            }
+                        }
+                    }
+                }
+                META_TO_OLSON_REF = new SoftReference<Map<String, List<MetaToOlsonMappingEntry>>>(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<String, List<MetaToOlsonMappingEntry>> metaToOlson = getMetaToOlsonMap();
+        List<MetaToOlsonMappingEntry> mappings = metaToOlson.get(metazoneID);
+        if (mappings != null) {
+            for (int i = 0; i < mappings.size(); i++) {
+                MetaToOlsonMappingEntry olsonmap = 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/main/classes/core/src/com/ibm/icu/impl/ZoneStringFormat.java b/main/classes/core/src/com/ibm/icu/impl/ZoneStringFormat.java
new file mode 100644
index 0000000..8e3e637
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/ZoneStringFormat.java
@@ -0,0 +1,1097 @@
+/*
+ *******************************************************************************
+ * 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.impl.ZoneMeta.OlsonToMetaMappingEntry;
+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<String, ZoneStrings>();
+        zoneStringsTrie = new TextTrieMap<ZoneStringInfo>(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);
+        }
+        isFullyLoaded = true;
+    }
+
+    /**
+     * 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 = 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<String, ZoneStrings>();
+        mzidToStrings = new HashMap<String, ZoneStrings>();
+        zoneStringsTrie = new TextTrieMap<ZoneStringInfo>(true);
+    }
+
+    // Load only a single zone
+    private synchronized void loadZone(String id) {
+        if (isFullyLoaded) {
+            return;
+        }
+        String tzid = ZoneMeta.getCanonicalSystemID(id);
+        if (tzid == null || tzidToStrings.containsKey(tzid)) {
+            return;
+        }
+
+        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[] zstrarray = new String[ZSIDX_MAX];
+        String[] mzstrarray = new String[ZSIDX_MAX];
+        String[][] mzPartialLoc = new String[10][4]; // maximum 10 metazones per zone
+
+        addSingleZone(tzid, zoneStringsBundle,
+                getFallbackFormat(locale), getRegionFormat(locale),
+                zstrarray, mzstrarray, mzPartialLoc);
+    }
+
+    // Loading all zone strings
+    private synchronized void loadFull() {
+        if (isFullyLoaded) {
+            return;
+        }
+        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();
+
+        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;
+            }
+
+            if (tzidToStrings.containsKey(tzid)) {
+                continue;
+            }
+
+            addSingleZone(tzid, zoneStringsBundle,
+                    getFallbackFormat(locale), getRegionFormat(locale),
+                    zstrarray, mzstrarray, mzPartialLoc);
+        }
+        isFullyLoaded = true;
+    }
+
+    // This internal initialization code must be called in a synchronized block
+    private void addSingleZone(String tzid, ICUResourceBundle zoneStringsBundle,
+            MessageFormat fallbackFmt, MessageFormat regionFmt,
+            String[] zstrarray, String[] mzstrarray, String[][] mzPartialLoc) {
+
+        if (tzidToStrings.containsKey(tzid)) {
+            return;
+        }
+
+        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<String, List<OlsonToMetaMappingEntry>> olsonToMeta = ZoneMeta.getOlsonToMetaMap();
+        List<OlsonToMetaMappingEntry> metazoneMappings = olsonToMeta.get(tzid);
+        if (metazoneMappings != null) {
+            Iterator<OlsonToMetaMappingEntry> it = metazoneMappings.iterator();
+            while (it.hasNext()) {
+                ZoneMeta.OlsonToMetaMappingEntry mzmap = it.next();
+                ZoneStrings mzStrings = 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] = 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<ULocale, ZoneStringFormat> TZFORMAT_CACHE = new SimpleCache<ULocale, ZoneStringFormat>();
+
+    /*
+     * 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<String, ZoneStrings> tzidToStrings;
+
+    // Map from metazone id to ZoneStrings
+    private Map<String, ZoneStrings> mzidToStrings;
+
+    // Zone string dictionary, used for look up
+    private TextTrieMap<ZoneStringInfo> 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;
+
+    // Loading status
+    private boolean isFullyLoaded = false;
+
+    /*
+     * Private method to get a zone string except generic partial location types.
+     */
+    private String getString(String tzid, int typeIdx, long date, boolean commonlyUsedOnly) {
+        if (!isFullyLoaded) {
+            // Lazy loading
+            loadZone(tzid);
+        }
+
+        String result = null;
+        ZoneStrings zstrings = 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 = 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 = 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();
+
+        if (!isFullyLoaded) {
+            // Lazy loading
+            loadZone(tzid);
+        }
+
+        ZoneStrings zstrings = 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 = 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 = 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) {
+        if (!isFullyLoaded) {
+            // Lazy loading
+            loadZone(tzid);
+        }
+
+        String result = null;
+        String mzid = ZoneMeta.getMetazoneID(tzid, date);
+        if (mzid != null) {
+            ZoneStrings zstrings = 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) {
+        loadFull();
+
+        Set<String> tzids = tzidToStrings.keySet();
+        String[][] zoneStrings = new String[tzids.size()][8];
+        int idx = 0;
+        for (String tzid : tzids) {
+            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.addLikelySubtags(locale);
+                    region = tmp.getCountry();
+                }
+            } else {
+                region = "";
+            }
+        }
+        return region;
+    }
+
+    // This method does lazy zone string loading
+    private ZoneStringInfo find(String text, int start, int types) {
+        ZoneStringInfo result = subFind(text, start, types);
+        if (isFullyLoaded) {
+            return result;
+        }
+        // When zone string data is partially loaded,
+        // this method return the result only when
+        // the input text is fully consumed.
+        if (result != null) {
+            int matchLen = result.getString().length();
+            if (text.length() - start == matchLen) {
+                return result;
+            }
+        }
+        // Now load all zone strings
+        loadFull();
+        return subFind(text, start, types);
+    }
+
+    /*
+     * 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 subFind(String text, int start, int types) {
+        ZoneStringInfo result = null;
+        ZoneStringSearchResultHandler handler = new ZoneStringSearchResultHandler();
+        zoneStringsTrie.find(text, start, handler);
+        List<ZoneStringInfo> list = handler.getMatchedZoneStrings();
+        ZoneStringInfo fallback = null;
+        if (list != null && list.size() > 0) {
+            Iterator<ZoneStringInfo> it = list.iterator();
+            while (it.hasNext()) {
+                ZoneStringInfo tmp = 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<ZoneStringInfo> {
+
+        private ArrayList<ZoneStringInfo> resultList;
+
+        public boolean handlePrefixMatch(int matchLength, Iterator<ZoneStringInfo> values) {
+            if (resultList == null) {
+                resultList = new ArrayList<ZoneStringInfo>();
+            }
+            while (values.hasNext()) {
+                ZoneStringInfo zsitem = values.next();
+                if (zsitem == null) {
+                    break;
+                }
+                int i = 0;
+                for (; i < resultList.size(); i++) {
+                    ZoneStringInfo tmp = 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<ZoneStringInfo> getMatchedZoneStrings() {
+            if (resultList == null || resultList.size() == 0) {
+                return null;
+            }
+            return resultList;
+        }
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/data/BreakIteratorRules.java b/main/classes/core/src/com/ibm/icu/impl/data/BreakIteratorRules.java
new file mode 100644
index 0000000..9cdb8d7
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/BreakIteratorRules_th.java b/main/classes/core/src/com/ibm/icu/impl/data/BreakIteratorRules_th.java
new file mode 100644
index 0000000..a060f64
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle.java
new file mode 100644
index 0000000..b6ae0e5
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_da.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_da.java
new file mode 100644
index 0000000..b4ce7f5
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_da_DK.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_da_DK.java
new file mode 100644
index 0000000..ed59e44
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_de.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_de.java
new file mode 100644
index 0000000..35b10f2
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_de_AT.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_de_AT.java
new file mode 100644
index 0000000..3e6f714
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_de_DE.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_de_DE.java
new file mode 100644
index 0000000..a39feee
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_el.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_el.java
new file mode 100644
index 0000000..f9d76ba7
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_el_GR.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_el_GR.java
new file mode 100644
index 0000000..9e1fabb
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en.java
new file mode 100644
index 0000000..abc51e7
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en_CA.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en_CA.java
new file mode 100644
index 0000000..de9f803
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en_GB.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en_GB.java
new file mode 100644
index 0000000..9a71420
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en_US.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_en_US.java
new file mode 100644
index 0000000..11d1531
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_es.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_es.java
new file mode 100644
index 0000000..1492564
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_es_MX.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_es_MX.java
new file mode 100644
index 0000000..dc52fcf
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_fr.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_fr.java
new file mode 100644
index 0000000..4564778
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_fr_CA.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_fr_CA.java
new file mode 100644
index 0000000..fd34777
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_fr_FR.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_fr_FR.java
new file mode 100644
index 0000000..244a9b6
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_it.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_it.java
new file mode 100644
index 0000000..c12bdc7
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_it_IT.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_it_IT.java
new file mode 100644
index 0000000..919648f
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_iw.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_iw.java
new file mode 100644
index 0000000..53ab7f6
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_iw_IL.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_iw_IL.java
new file mode 100644
index 0000000..7d60b08
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_ja_JP.java b/main/classes/core/src/com/ibm/icu/impl/data/HolidayBundle_ja_JP.java
new file mode 100644
index 0000000..e7ef8ff
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/ResourceReader.java b/main/classes/core/src/com/ibm/icu/impl/data/ResourceReader.java
new file mode 100644
index 0000000..63fd084
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/data/ResourceReader.java
@@ -0,0 +1,242 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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/main/classes/core/src/com/ibm/icu/impl/data/TokenIterator.java b/main/classes/core/src/com/ibm/icu/impl/data/TokenIterator.java
new file mode 100644
index 0000000..c99d280
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/data/package.html b/main/classes/core/src/com/ibm/icu/impl/data/package.html
new file mode 100644
index 0000000..4f9bcd3
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/BasicDurationFormat.java b/main/classes/core/src/com/ibm/icu/impl/duration/BasicDurationFormat.java
new file mode 100644
index 0000000..2683ebc
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/duration/BasicDurationFormat.java
@@ -0,0 +1,177 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2009, 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 BasicDurationFormat getInstance(ULocale locale) {
+        return new BasicDurationFormat(locale);
+    }
+
+    private static boolean checkXMLDuration = true; 
+
+    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(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
+        }
+        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);
+    }
+
+    /** 
+     *  JDK 1.5+ only
+     * @param obj Object being passed.
+     * @return The PeriodFormatter object formatted to the object passed.
+     * @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);
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/duration/BasicDurationFormatter.java b/main/classes/core/src/com/ibm/icu/impl/duration/BasicDurationFormatter.java
new file mode 100644
index 0000000..67ee04d
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/BasicDurationFormatterFactory.java b/main/classes/core/src/com/ibm/icu/impl/duration/BasicDurationFormatterFactory.java
new file mode 100644
index 0000000..2a95be7
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/duration/BasicDurationFormatterFactory.java
@@ -0,0 +1,246 @@
+/*
+******************************************************************************
+* 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.
+   *
+   * @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 timeZone The time zone to use.
+   * @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/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodBuilderFactory.java b/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodBuilderFactory.java
new file mode 100644
index 0000000..027aa8d
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodFormatter.java b/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodFormatter.java
new file mode 100644
index 0000000..6ec213d
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodFormatterFactory.java b/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodFormatterFactory.java
new file mode 100644
index 0000000..91a9c3e
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodFormatterService.java b/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodFormatterService.java
new file mode 100644
index 0000000..46c178f
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/duration/BasicPeriodFormatterService.java
@@ -0,0 +1,62 @@
+/*
+ ******************************************************************************
+ * 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.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<String> getAvailableLocaleNames() {
+        return ds.getAvailableLocales();
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/duration/DateFormatter.java b/main/classes/core/src/com/ibm/icu/impl/duration/DateFormatter.java
new file mode 100644
index 0000000..e0232f7
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/DurationFormatter.java b/main/classes/core/src/com/ibm/icu/impl/duration/DurationFormatter.java
new file mode 100644
index 0000000..d78d80c
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/DurationFormatterFactory.java b/main/classes/core/src/com/ibm/icu/impl/duration/DurationFormatterFactory.java
new file mode 100644
index 0000000..2b1dda1
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/duration/DurationFormatterFactory.java
@@ -0,0 +1,79 @@
+/*
+******************************************************************************
+* Copyright (C) 2009, 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 formatter the formatter 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 timeZone The time zone to set.
+   * @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/main/classes/core/src/com/ibm/icu/impl/duration/Period.java b/main/classes/core/src/com/ibm/icu/impl/duration/Period.java
new file mode 100644
index 0000000..427de06
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/PeriodBuilder.java b/main/classes/core/src/com/ibm/icu/impl/duration/PeriodBuilder.java
new file mode 100644
index 0000000..188b352
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/PeriodBuilderFactory.java b/main/classes/core/src/com/ibm/icu/impl/duration/PeriodBuilderFactory.java
new file mode 100644
index 0000000..5b022ff
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/PeriodFormatter.java b/main/classes/core/src/com/ibm/icu/impl/duration/PeriodFormatter.java
new file mode 100644
index 0000000..a3363f1
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/PeriodFormatterFactory.java b/main/classes/core/src/com/ibm/icu/impl/duration/PeriodFormatterFactory.java
new file mode 100644
index 0000000..2110d45
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/PeriodFormatterService.java b/main/classes/core/src/com/ibm/icu/impl/duration/PeriodFormatterService.java
new file mode 100644
index 0000000..8135325
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/duration/PeriodFormatterService.java
@@ -0,0 +1,46 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 2007-2009, 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<String> getAvailableLocaleNames();
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/duration/TimeUnit.java b/main/classes/core/src/com/ibm/icu/impl/duration/TimeUnit.java
new file mode 100644
index 0000000..a9f1e01
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/TimeUnitConstants.java b/main/classes/core/src/com/ibm/icu/impl/duration/TimeUnitConstants.java
new file mode 100644
index 0000000..9de023b
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/impl/DataRecord.java b/main/classes/core/src/com/ibm/icu/impl/duration/impl/DataRecord.java
new file mode 100644
index 0000000..d1e55a8
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/duration/impl/DataRecord.java
@@ -0,0 +1,311 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 2007-2009, International Business Machines Corporation and   *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+ */
+
+package com.ibm.icu.impl.duration.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 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<ScopeData> list = new ArrayList<ScopeData>(); // of ScopeData
+                ScopeData data;
+                while (null != (data = ScopeData.read(in))) {
+                    list.add(data);
+                }
+                if (in.close()) {
+                    record.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/main/classes/core/src/com/ibm/icu/impl/duration/impl/PeriodFormatterData.java b/main/classes/core/src/com/ibm/icu/impl/duration/impl/PeriodFormatterData.java
new file mode 100644
index 0000000..7183990
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/duration/impl/PeriodFormatterData.java
@@ -0,0 +1,661 @@
+/*
+******************************************************************************
+* Copyright (C) 2009, 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
+   * @return true if will require skip marker
+   */
+  @SuppressWarnings("fallthrough")
+  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 = 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 = 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/main/classes/core/src/com/ibm/icu/impl/duration/impl/PeriodFormatterDataService.java b/main/classes/core/src/com/ibm/icu/impl/duration/impl/PeriodFormatterDataService.java
new file mode 100644
index 0000000..4bdcd99
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/duration/impl/PeriodFormatterDataService.java
@@ -0,0 +1,31 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 2007-2009, 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<String> getAvailableLocales();
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/duration/impl/RecordReader.java b/main/classes/core/src/com/ibm/icu/impl/duration/impl/RecordReader.java
new file mode 100644
index 0000000..64e3fee
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/impl/RecordWriter.java b/main/classes/core/src/com/ibm/icu/impl/duration/impl/RecordWriter.java
new file mode 100644
index 0000000..bb94d76
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/impl/ResourceBasedPeriodFormatterDataService.java b/main/classes/core/src/com/ibm/icu/impl/duration/impl/ResourceBasedPeriodFormatterDataService.java
new file mode 100644
index 0000000..7132683
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/duration/impl/ResourceBasedPeriodFormatterDataService.java
@@ -0,0 +1,162 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 2007-2009, 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<String> availableLocales; // of String
+
+    private PeriodFormatterData lastData = null;
+    private String lastLocale = null;
+    private Map<String, PeriodFormatterData> cache = new HashMap<String, PeriodFormatterData>(); // 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<String> localeNames = new ArrayList<String>(); // 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 = 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<String> 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/main/classes/core/src/com/ibm/icu/impl/duration/impl/Utils.java b/main/classes/core/src/com/ibm/icu/impl/duration/impl/Utils.java
new file mode 100644
index 0000000..d2ac08a
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/impl/XMLRecordReader.java b/main/classes/core/src/com/ibm/icu/impl/duration/impl/XMLRecordReader.java
new file mode 100644
index 0000000..7465438
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/duration/impl/XMLRecordReader.java
@@ -0,0 +1,306 @@
+/*
+******************************************************************************
+* Copyright (C) 2007-2009, 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<String> nameStack;
+
+    private boolean atTag;
+
+    private String tag; // cache
+
+    public XMLRecordReader(Reader r) {
+        this.r = r;
+        this.nameStack = new ArrayList<String>();
+
+        // 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 = 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<String> list = new ArrayList<String>();
+            String s;
+            while (null != (s = string(name))) {
+                if ("Null".equals(s)) {
+                    s = null;
+                }
+                list.add(s);
+            }
+            if (match("/" + name + "List")) {
+                return list.toArray(new String[list.size()]);
+            }
+        }
+        return null;
+    }
+
+    public String[][] stringTable(String name) {
+        if (match(name + "Table")) {
+            List<String[]> list = new ArrayList<String[]>();
+            String[] sa;
+            while (null != (sa = stringArray(name))) {
+                list.add(sa);
+            }
+            if (match("/" + name + "Table")) {
+                return 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/main/classes/core/src/com/ibm/icu/impl/duration/impl/XMLRecordWriter.java b/main/classes/core/src/com/ibm/icu/impl/duration/impl/XMLRecordWriter.java
new file mode 100644
index 0000000..e121b24
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/duration/impl/XMLRecordWriter.java
@@ -0,0 +1,250 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 2007-2009, 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<String> nameStack;
+
+    public XMLRecordWriter(Writer w) {
+        this.w = w;
+        this.nameStack = new ArrayList<String>();
+    }
+
+    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 = 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 = 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/main/classes/core/src/com/ibm/icu/impl/duration/impl/YMDDateFormatter.java b/main/classes/core/src/com/ibm/icu/impl/duration/impl/YMDDateFormatter.java
new file mode 100644
index 0000000..6845e17
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/index.txt b/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/index.txt
new file mode 100644
index 0000000..ead7988
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml b/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml
new file mode 100644
index 0000000..f78c305
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml.escaped b/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ar_EG.xml.escaped
new file mode 100644
index 0000000..63bc4f9
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_en.xml b/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_en.xml
new file mode 100644
index 0000000..49b24f7
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_es.xml b/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_es.xml
new file mode 100644
index 0000000..b1473e3
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_fr.xml b/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_fr.xml
new file mode 100644
index 0000000..0809dd2
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_he_IL.xml b/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_he_IL.xml
new file mode 100644
index 0000000..4018d0d
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_hi.xml b/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_hi.xml
new file mode 100644
index 0000000..6222ef5
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_it.xml b/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_it.xml
new file mode 100644
index 0000000..245a317
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ja.xml b/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ja.xml
new file mode 100644
index 0000000..a309ce8
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ko.xml b/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ko.xml
new file mode 100644
index 0000000..32de9a7
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ru.xml b/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_ru.xml
new file mode 100644
index 0000000..55dc352
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_th.xml b/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_th.xml
new file mode 100644
index 0000000..f453651
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans.xml b/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans.xml
new file mode 100644
index 0000000..b3f60ae
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans_SG.xml b/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hans_SG.xml
new file mode 100644
index 0000000..bb8eca8
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant.xml b/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant.xml
new file mode 100644
index 0000000..8b84f23
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant_HK.xml b/main/classes/core/src/com/ibm/icu/impl/duration/impl/data/pfd_zh_Hant_HK.xml
new file mode 100644
index 0000000..e474dee
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/impl/locale/AsciiUtil.java b/main/classes/core/src/com/ibm/icu/impl/locale/AsciiUtil.java
new file mode 100644
index 0000000..a8f1328
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/locale/AsciiUtil.java
@@ -0,0 +1,177 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.locale;
+
+public final class AsciiUtil {
+    public static boolean caseIgnoreMatch(String s1, String s2) {
+        if (s1 == s2) {
+            return true;
+        }
+        int len = s1.length();
+        if (len != s2.length()) {
+            return false;
+        }
+        int i = 0;
+        while (i < len) {
+            char c1 = s1.charAt(i);
+            char c2 = s2.charAt(i);
+            if (c1 != c2 && toLower(c1) != toLower(c2)) {
+                break;
+            }
+            i++;
+        }
+        return (i == len);
+    }
+
+    public static int caseIgnoreCompare(String s1, String s2) {
+        if (s1 == s2) {
+            return 0;
+        }
+        return AsciiUtil.toLowerString(s1).compareTo(AsciiUtil.toLowerString(s2));
+    }
+
+
+    public static char toUpper(char c) {
+        if (c >= 'a' && c <= 'z') {
+            c -= 0x20;
+        }
+        return c;
+    }
+
+    public static char toLower(char c) {
+        if (c >= 'A' && c <= 'Z') {
+            c += 0x20;
+        }
+        return c;
+    }
+
+    public static String toLowerString(String s) {
+        int idx = 0;
+        for (; idx < s.length(); idx++) {
+            char c = s.charAt(idx);
+            if (c >= 'A' && c <= 'Z') {
+                break;
+            }
+        }
+        if (idx == s.length()) {
+            return s;
+        }
+        StringBuilder buf = new StringBuilder(s.substring(0, idx));
+        for (; idx < s.length(); idx++) {
+            buf.append(toLower(s.charAt(idx)));
+        }
+        return buf.toString();
+    }
+
+    public static String toUpperString(String s) {
+        int idx = 0;
+        for (; idx < s.length(); idx++) {
+            char c = s.charAt(idx);
+            if (c >= 'a' && c <= 'z') {
+                break;
+            }
+        }
+        if (idx == s.length()) {
+            return s;
+        }
+        StringBuilder buf = new StringBuilder(s.substring(0, idx));
+        for (; idx < s.length(); idx++) {
+            buf.append(toUpper(s.charAt(idx)));
+        }
+        return buf.toString();
+    }
+
+    public static String toTitleString(String s) {
+        int idx = 0;
+        char c = s.charAt(idx);
+        if (!(c >= 'a' && c <= 'z')) {
+            for (idx = 1; idx < s.length(); idx++) {
+                if (c >= 'A' && c <= 'Z') {
+                    break;
+                }
+            }
+        }
+        if (idx == s.length()) {
+            return s;
+        }
+        StringBuilder buf = new StringBuilder(s.substring(0, idx));
+        if (idx == 0) {
+            buf.append(toUpper(s.charAt(idx)));
+            idx++;
+        }
+        for (; idx < s.length(); idx++) {
+            buf.append(toLower(s.charAt(idx)));
+        }
+        return buf.toString();
+    }
+
+    public static boolean isAlpha(char c) {
+        return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z');
+    }
+
+    public static boolean isAlphaString(String s) {
+        boolean b = true;
+        for (int i = 0; i < s.length(); i++) {
+            if (!isAlpha(s.charAt(i))) {
+                b = false;
+                break;
+            }
+        }
+        return b;
+    }
+
+    public static boolean isNumeric(char c) {
+        return (c >= '0' && c <= '9');
+    }
+
+    public static boolean isNumericString(String s) {
+        boolean b = true;
+        for (int i = 0; i < s.length(); i++) {
+            if (!isNumeric(s.charAt(i))) {
+                b = false;
+                break;
+            }
+        }
+        return b;
+    }
+
+    public static boolean isAlphaNumeric(char c) {
+        return isAlpha(c) || isNumeric(c);
+    }
+
+    public static boolean isAlphaNumericString(String s) {
+        boolean b = true;
+        for (int i = 0; i < s.length(); i++) {
+            if (!isAlphaNumeric(s.charAt(i))) {
+                b = false;
+                break;
+            }
+        }
+        return b;
+    }
+
+    public static class CaseInsensitiveKey {
+        private String _key;
+        private int _hash;
+
+        public CaseInsensitiveKey(String key) {
+            _key = key;
+            _hash = AsciiUtil.toLowerString(key).hashCode();
+        }
+
+        public boolean equals(Object o) {
+            if (o instanceof CaseInsensitiveKey) {
+                return AsciiUtil.caseIgnoreMatch(_key, ((CaseInsensitiveKey)o)._key);
+            }
+            return false;
+        }
+
+        public int hashCode() {
+            return _hash;
+        }
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/locale/BaseLocale.java b/main/classes/core/src/com/ibm/icu/impl/locale/BaseLocale.java
new file mode 100644
index 0000000..aee27b0
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/locale/BaseLocale.java
@@ -0,0 +1,261 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.impl.locale;
+
+
+
+public final class BaseLocale {
+
+    private String _language = "";
+    private String _script = "";
+    private String _region = "";
+    private String _variant = "";
+
+    private transient String _id = "";
+    private transient String _java6string = "";
+    private transient BaseLocale _parent;
+
+    private static final char SEPCHAR = '_';
+
+    private static final LocaleObjectCache<BaseLocaleKey,BaseLocale> BASELOCALECACHE
+        = new LocaleObjectCache<BaseLocaleKey,BaseLocale>();
+
+    public static final BaseLocale ROOT = new BaseLocale("", "", "", "");
+
+    private BaseLocale(String language, String script, String region, String variant) {
+        if (language != null) {
+            _language = language;
+        }
+        if (script != null) {
+            _script = script;
+        }
+        if (region != null) {
+            _region = region;
+        }
+        if (variant != null) {
+            _variant = variant;
+        }
+    }
+
+    public static BaseLocale getInstance(String language, String script, String region, String variant) {
+        BaseLocaleKey key = new BaseLocaleKey(language, script, region, variant);
+        BaseLocale baseLocale = BASELOCALECACHE.get(key);
+        if (baseLocale == null) {
+            // Create a canonical BaseLocale instance
+            baseLocale = new BaseLocale(language, script, region, variant).canonicalize();
+            BASELOCALECACHE.put(baseLocale.createKey(), baseLocale);
+        }
+        return baseLocale;
+    }
+
+    public boolean equals(Object obj) {
+        return (this == obj) ||
+                ((obj instanceof BaseLocale) && _id == (((BaseLocale)obj)._id));
+    }
+
+    public int hashCode() {
+        return _id.hashCode();
+    }
+
+    public String getJava6String() {
+        return _java6string;
+    }
+
+    public String getLanguage() {
+        return _language;
+    }
+
+    public String getScript() {
+        return _script;
+    }
+
+    public String getRegion() {
+        return _region;
+    }
+
+    public String getVariant() {
+        return _variant;
+    }
+
+    public BaseLocale getParent() {
+        return _parent;
+    }
+
+    public String getID() {
+        return _id;
+    }
+
+    public String toString() {
+        return _id;
+    }
+
+    private BaseLocale canonicalize() {
+
+        StringBuilder id = new StringBuilder();
+
+        int languageLen = _language.length();
+        int scriptLen = _script.length();
+        int regionLen = _region.length();
+        int variantLen = _variant.length();
+
+        if (languageLen > 0) {
+            // language to lower case
+            _language = AsciiUtil.toLowerString(_language).intern();
+
+            id.append(_language);
+        }
+
+        if (scriptLen > 0) {
+            // script - the first letter to upper case, the rest to lower case
+            _script = AsciiUtil.toTitleString(_script).intern();
+
+            id.append(SEPCHAR);
+            id.append(_script);
+        }
+
+        if (regionLen > 0) {
+            // region to upper case
+            _region = AsciiUtil.toUpperString(_region).intern();
+
+            id.append(SEPCHAR);
+            id.append(_region);
+        }
+
+        if (variantLen > 0) {
+            // variant in JDK conventionally use upper case letters,
+            // but it was actually case sensitive.  We normalize
+            // variant to upper case here, which might be breaking
+            // change.  But at least it works well for all variants
+            // defined by JDK.
+            _variant = AsciiUtil.toUpperString(_variant).intern();
+
+            if (regionLen == 0) {
+                id.append(SEPCHAR);
+            }
+            id.append(SEPCHAR);
+            id.append(_variant);
+        }
+
+        _id = id.toString().intern();
+
+        // Compose legacy JDK ID string if required
+        if (languageLen == 0 && regionLen == 0 && variantLen > 0) {
+            _java6string = "";
+        } else if (scriptLen > 0 || (regionLen == 0 && variantLen > 0)) {
+            StringBuilder buf = new StringBuilder(_language);
+            if (regionLen > 0) {
+                buf.append(SEPCHAR);
+                buf.append(_region);
+            } else if (variantLen > 0) {
+                buf.append(SEPCHAR);
+            }
+            if (variantLen > 0) {
+                buf.append(SEPCHAR);
+                buf.append(_variant);
+            }
+            _java6string = buf.toString().intern();
+        } else {
+            _java6string = _id;
+        }
+
+        // Resolve parent
+        if (variantLen > 0) {
+            // variant field in Java Locale may contain multiple
+            // subtags
+            int lastSep = _variant.lastIndexOf(SEPCHAR);
+            if (lastSep == -1) {
+                _parent = getInstance(_language, _script, _region, "");
+            } else {
+                _parent = getInstance(_language, _script, _region, _variant.substring(0, lastSep));
+            }
+        } else if (regionLen > 0) {
+            _parent = getInstance(_language, _script, "", "");
+        } else if (scriptLen > 0) {
+            _parent = getInstance(_language, "", "", "");
+        } else if (languageLen > 0) {
+            _parent = ROOT;
+        } else {
+            // This is the root
+            // We should never get here, because ROOT is pre-populated.
+            _parent = null;
+        }
+        return this;
+    }
+
+    private BaseLocaleKey createKey() {
+        return new BaseLocaleKey(_language, _script, _region, _variant);
+    }
+
+    public static class BaseLocaleKey implements Comparable<BaseLocaleKey> {
+        private String _lang = "";
+        private String _scrt = "";
+        private String _regn = "";
+        private String _vart = "";
+
+        private int _hash; // Default to 0
+
+        public BaseLocaleKey(String language, String script, String region, String variant) {
+            if (language != null) {
+                _lang = language;
+            }
+            if (script != null) {
+                _scrt = script;
+            }
+            if (region != null) {
+                _regn = region;
+            }
+            if (variant != null) {
+                _vart = variant;
+            }
+        }
+
+        public boolean equals(Object obj) {
+            return (this == obj) ||
+                    (obj instanceof BaseLocaleKey)
+                    && AsciiUtil.caseIgnoreMatch(((BaseLocaleKey)obj)._lang, this._lang)
+                    && AsciiUtil.caseIgnoreMatch(((BaseLocaleKey)obj)._scrt, this._scrt)
+                    && AsciiUtil.caseIgnoreMatch(((BaseLocaleKey)obj)._regn, this._regn)
+                    && ((BaseLocaleKey)obj)._vart.equals(_vart); // variant is case sensitive in JDK!
+        }
+
+        public int compareTo(BaseLocaleKey other) {
+            int res = AsciiUtil.caseIgnoreCompare(this._lang, other._lang);
+            if (res == 0) {
+                res = AsciiUtil.caseIgnoreCompare(this._scrt, other._scrt);
+                if (res == 0) {
+                    res = AsciiUtil.caseIgnoreCompare(this._regn, other._regn);
+                    if (res == 0) {
+                        res = AsciiUtil.caseIgnoreCompare(this._vart, other._vart);
+                    }
+                }
+            }
+            return res;
+        }
+
+        public int hashCode() {
+            int h = _hash;
+            if (h == 0) {
+                // Generating a hash value from language, script, region and variant
+                for (int i = 0; i < _lang.length(); i++) {
+                    h = 31*h + AsciiUtil.toLower(_lang.charAt(i));
+                }
+                for (int i = 0; i < _scrt.length(); i++) {
+                    h = 31*h + AsciiUtil.toLower(_scrt.charAt(i));
+                }
+                for (int i = 0; i < _regn.length(); i++) {
+                    h = 31*h + AsciiUtil.toLower(_regn.charAt(i));
+                }
+                for (int i = 0; i < _vart.length(); i++) {
+                    h = 31*h + AsciiUtil.toLower(_vart.charAt(i));
+                }
+                _hash = h;
+            }
+            return h;
+        }
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/locale/InternalLocaleBuilder.java b/main/classes/core/src/com/ibm/icu/impl/locale/InternalLocaleBuilder.java
new file mode 100644
index 0000000..04b85c2
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/locale/InternalLocaleBuilder.java
@@ -0,0 +1,349 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.locale;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+public final class InternalLocaleBuilder {
+
+    public static final char PRIVATEUSEKEY = 'x';
+
+    private String _language = "";
+    private String _script = "";
+    private String _region = "";
+    private String _variant = "";
+
+    private FieldHandler _handler = FieldHandler.DEFAULT;
+
+    private HashMap<Character, String> _extMap;
+    private HashMap<String, String> _kwdMap;
+
+    private static final char LDMLSINGLETON = 'u';
+
+    private static final String LANGTAGSEP = "-";
+    private static final String LOCALESEP = "_";
+
+    private static final int DEFAULTMAPCAPACITY = 4;
+
+    public InternalLocaleBuilder() {
+    }
+
+    public InternalLocaleBuilder(FieldHandler handler) {
+        _handler = handler;
+    }
+
+    public InternalLocaleBuilder setLanguage(String language) throws LocaleSyntaxException {
+        String newval = "";
+        if (language.length() > 0) {
+            newval = _handler.process(FieldType.LANGUAGE, language);
+            if (newval == null) {
+                throw new LocaleSyntaxException("Ill-formed language: " + language);
+            }
+        }
+        _language = newval;
+        return this;
+    }
+
+    public InternalLocaleBuilder setScript(String script) throws LocaleSyntaxException {
+        String newval = "";
+        if (script.length() > 0) {
+            newval = _handler.process(FieldType.SCRIPT, script);
+            if (newval == null) {
+                throw new LocaleSyntaxException("Ill-formed script: " + script);
+            }
+        }
+        _script = newval;
+        return this;
+    }
+
+    public InternalLocaleBuilder setRegion(String region) throws LocaleSyntaxException {
+        String newval = "";
+        if (region.length() > 0) {
+            newval = _handler.process(FieldType.REGION, region);
+            if (newval == null) {
+                throw new LocaleSyntaxException("Ill-formed region: " + region);
+            }
+        }
+        _region = newval;
+        return this;
+    }
+
+    public InternalLocaleBuilder setVariant(String variant) throws LocaleSyntaxException {
+        String newval = "";
+        if (variant.length() > 0) {
+            newval = _handler.process(FieldType.VARIANT, variant);
+            if (newval == null) {
+                throw new LocaleSyntaxException("Ill-formed variant: " + variant);
+            }
+        }
+        _variant = newval;
+        return this;
+    }
+
+    public InternalLocaleBuilder setLDMLExtensionValue(String key, String type) throws LocaleSyntaxException {
+        if (key.length() == 0) {
+            throw new LocaleSyntaxException("Empty LDML extension key");
+        }
+        String kwdkey = _handler.process(FieldType.LDMLKEY, key);
+        if (kwdkey == null) {
+            throw new LocaleSyntaxException("Ill-formed LDML extension key: " + key);
+        }
+
+        if (type.length() == 0) {
+            if (_kwdMap != null) {
+                _kwdMap.remove(kwdkey);
+            }
+        } else {
+            String kwdtype = _handler.process(FieldType.LDMLTYPE, type);
+            if (kwdtype == null) {
+                throw new LocaleSyntaxException("Ill-formed LDML extension value: " + type);
+            }
+            if (_kwdMap == null) {
+                _kwdMap = new HashMap<String, String>(DEFAULTMAPCAPACITY);
+            }
+            _kwdMap.put(kwdkey, kwdtype);
+        }
+
+        return this;
+    }
+
+    public InternalLocaleBuilder setExtension(char singleton, String value) throws LocaleSyntaxException {
+        if (!LocaleExtensions.isValidExtensionKey(singleton)) {
+            throw new LocaleSyntaxException("Ill-formed extension key: " + singleton);
+        }
+
+        // singleton char to lower case
+        singleton = AsciiUtil.toLower(singleton);
+
+        if (singleton == LDMLSINGLETON) {
+            // 'u' extension reserved for locale keywords
+            if (_kwdMap != null) {
+                // blow out the keywords currently set
+                _kwdMap.clear();
+            }
+            // parse locale keyword extension subtags
+            String[] kwdtags = (value.replaceAll(LOCALESEP, LANGTAGSEP)).split(LANGTAGSEP);
+            if ((kwdtags.length % 2) != 0) {
+                // number of keyword subtags must be even number
+                throw new LocaleSyntaxException("Ill-formed LDML extension key/value pairs: " + value);
+            }
+            int idx = 0;
+            while (idx < kwdtags.length) {
+                String kwdkey = _handler.process(FieldType.LDMLKEY, kwdtags[idx++]);
+                String kwdtype = _handler.process(FieldType.LDMLTYPE, kwdtags[idx++]);
+                if (kwdkey == null || kwdkey.length() == 0
+                        || kwdtype == null || kwdtype.length() == 0) {
+                    throw new LocaleSyntaxException("Ill-formed LDML extension key/value pairs: " + value);
+                }
+                if (_kwdMap == null) {
+                    _kwdMap = new HashMap<String, String>(kwdtags.length / 2);
+                }
+                String prevVal = _kwdMap.put(kwdkey, kwdtype);
+                if (prevVal != null) {
+                    throw new LocaleSyntaxException("Ill-formed LDML extension containing duplicated keys: " + value);
+                }
+            }
+        } else {
+            // other extensions including privateuse
+            if (value.length() == 0) {
+                if (_extMap != null) {
+                    _extMap.remove(Character.valueOf(singleton));
+                }
+            } else {
+                FieldType ftype = (singleton == PRIVATEUSEKEY) ? FieldType.PRIVATEUSE : FieldType.EXTENSION;
+                String extval = _handler.process(ftype, value);
+                if (extval == null) {
+                    throw new LocaleSyntaxException("Ill-formed LDML extension value: " + value);
+                }
+                if (_extMap == null) {
+                    _extMap = new HashMap<Character, String>(DEFAULTMAPCAPACITY);
+                }
+                _extMap.put(Character.valueOf(singleton), extval);
+            }
+        }
+        return this;
+    }
+
+    public InternalLocaleBuilder clear() {
+        _language = "";
+        _script = "";
+        _region = "";
+        _variant = "";
+        removeLocaleExtensions();
+        return this;
+    }
+
+    public InternalLocaleBuilder removeLocaleExtensions() {
+        if (_extMap != null) {
+            _extMap.clear();
+        }
+        if (_kwdMap != null) {
+            _kwdMap.clear();
+        }
+        return this;
+    }
+
+    public BaseLocale getBaseLocale() {
+        return BaseLocale.getInstance(_language, _script, _region, _variant);
+    }
+
+    public LocaleExtensions getLocaleExtensions() {
+        TreeMap<Character, String> extMap = null;
+        TreeMap<String, String> kwdMap = null;
+
+        // process keywords
+        if (_kwdMap != null && _kwdMap.size() > 0) {
+            Set<Map.Entry<String, String>> kwds = _kwdMap.entrySet();
+            for (Map.Entry<String, String> kwd : kwds) {
+                String key = kwd.getKey();
+                String type = kwd.getValue();
+                if (kwdMap == null) {
+                    kwdMap = new TreeMap<String, String>();
+                }
+                kwdMap.put(key.intern(), type.intern());
+            }
+        }
+
+        // process extensions and privateuse
+        if (_extMap != null) {
+            Set<Map.Entry<Character, String>> exts = _extMap.entrySet();
+            for (Map.Entry<Character, String> ext : exts) {
+                Character key = ext.getKey();
+                String value = ext.getValue();
+                if (extMap == null) {
+                    extMap = new TreeMap<Character, String>();
+                }
+                extMap.put(key, value.intern());
+            }
+        }
+
+        // set canonical locale keyword extension string to the extension map
+        if (kwdMap != null) {
+            StringBuilder buf = new StringBuilder();
+            LocaleExtensions.keywordsToString(kwdMap, buf);
+            if (extMap == null) {
+                extMap = new TreeMap<Character, String>();
+            }
+            extMap.put(Character.valueOf(LDMLSINGLETON), buf.toString().intern());
+        }
+
+        return LocaleExtensions.getInstance(extMap, kwdMap);
+    }
+
+    protected enum FieldType {
+        LANGUAGE,
+        SCRIPT,
+        REGION,
+        VARIANT,
+        LDMLKEY,
+        LDMLTYPE,
+        EXTENSION,
+        PRIVATEUSE
+    }
+
+    public static class FieldHandler {
+        public static FieldHandler DEFAULT = new FieldHandler();
+
+        protected FieldHandler() {
+        }
+
+        public String process(FieldType type, String value) {
+            value = map(type, value);
+            if (value.length() > 0 && !validate(type, value)) {
+                return null;
+            }
+            return value;
+        }
+
+        protected String map(FieldType type, String value) {
+            switch (type) {
+            case LANGUAGE:
+                value = AsciiUtil.toLowerString(value);
+                break;
+            case SCRIPT:
+                if (value.length() > 0) {
+                    StringBuilder buf = new StringBuilder();
+                    buf.append(AsciiUtil.toUpper(value.charAt(0)));
+                    for (int i = 1; i < value.length(); i++) {
+                        buf.append(AsciiUtil.toLower(value.charAt(i)));
+                    }
+                    value = buf.toString();
+                }
+                break;
+            case REGION:
+                value = AsciiUtil.toUpperString(value);
+                break;
+            case VARIANT:
+                // Java variant is case sensitive - so no case mapping here
+                value = value.replaceAll(LANGTAGSEP, LOCALESEP);
+                break;
+            case LDMLKEY:
+            case LDMLTYPE:
+            case EXTENSION:
+            case PRIVATEUSE:
+                value = AsciiUtil.toLowerString(value).replaceAll(LOCALESEP, LANGTAGSEP);
+                break;
+            }
+            return value;
+        }
+
+        protected boolean validate(FieldType type, String value) {
+            boolean isValid = false;
+            String[] subtags;
+
+            switch (type) {
+            case LANGUAGE:
+                isValid = LanguageTag.isLanguageSubtag(value);
+                break;
+            case SCRIPT:
+                isValid = LanguageTag.isScriptSubtag(value);
+                break;
+            case REGION:
+                isValid = LanguageTag.isRegionSubtag(value);
+                break;
+            case VARIANT:
+                // variant field could have multiple subtags
+                subtags = value.split(LOCALESEP);
+                for (String subtag : subtags) {
+                    isValid = LanguageTag.isVariantSubtag(subtag);
+                    if (!isValid) {
+                        break;
+                    }
+                }
+                break;
+            case LDMLKEY:
+                isValid = LocaleExtensions.isValidLDMLKey(value);
+                break;
+            case LDMLTYPE:
+                isValid = LocaleExtensions.isValidLDMLType(value);
+                break;
+            case EXTENSION:
+                subtags = value.split(LANGTAGSEP);
+                for (String subtag : subtags) {
+                    isValid = LanguageTag.isExtensionSubtag(subtag);
+                    if (!isValid) {
+                        break;
+                    }
+                }
+                break;
+            case PRIVATEUSE:
+                subtags = value.split(LANGTAGSEP);
+                for (String subtag : subtags) {
+                    isValid = LanguageTag.isPrivateuseValueSubtag(subtag);
+                    if (!isValid) {
+                        break;
+                    }
+                }
+                break;
+            }
+            return isValid;
+        }
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/locale/LanguageTag.java b/main/classes/core/src/com/ibm/icu/impl/locale/LanguageTag.java
new file mode 100644
index 0000000..5ee6b5f
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/locale/LanguageTag.java
@@ -0,0 +1,525 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.locale;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.TreeSet;
+
+public final class LanguageTag {
+
+    private String _languageTag = "";   // entire language tag
+    private String _grandfathered = ""; // grandfathered tag
+    private String _privateuse = "";    // privateuse, not including leading "x-"
+    private String _language = "";      // language subtag
+    private String[] _extlang;          // array of extlang subtags
+    private String _script = "";        // script subtag
+    private String _region = "";        // region subtag
+    private TreeSet<String> _variants;  // variant subtags in a single string
+    private TreeSet<Extension> _extensions; // extension key/value pairs
+
+    private static final int MINLEN = 2; // minimum length of a valid language tag
+
+    private static final String SEP = "-";
+    private static final char SEPCHAR = '-';
+    private static final String PRIVATEUSE = "x";
+
+    public static String UNDETERMINED = "und";
+
+    // Map contains grandfathered tags and its preferred mappings from
+    // http://www.ietf.org/internet-drafts/draft-ietf-ltru-4645bis-09.txt
+    private static final HashMap<AsciiUtil.CaseInsensitiveKey, String[]> GRANDFATHERED =
+        new HashMap<AsciiUtil.CaseInsensitiveKey, String[]>();
+
+    static {
+        final String[][] entries = {
+          //{"tag",         "preferred"},
+            {"art-lojban",  "jbo"},
+            {"cel-gaulish", ""},
+            {"en-GB-oed",   ""},
+            {"i-ami",       "ami"},
+            {"i-bnn",       "bnn"},
+            {"i-default",   ""},
+            {"i-enochian",  ""},
+            {"i-hak",       "hak"},
+            {"i-klingon",   "tlh"},
+            {"i-lux",       "lb"},
+            {"i-mingo",     ""},
+            {"i-navajo",    "nv"},
+            {"i-pwn",       "pwn"},
+            {"i-tao",       "tao"},
+            {"i-tay",       "tay"},
+            {"i-tsu",       "tsu"},
+            {"no-bok",      "nb"},
+            {"no-nyn",      "nn"},
+            {"sgn-BE-FR",   "sfb"},
+            {"sgn-BE-NL",   "vgt"},
+            {"sgn-CH-DE",   "sgg"},
+            {"zh-guoyu",    "cmn"},
+            {"zh-hakka",    "hak"},
+            {"zh-min",      ""},
+            {"zh-min-nan",  "nan"},
+            {"zh-xiang",    "hsn"},
+        };
+        for (String[] e : entries) {
+            GRANDFATHERED.put(new AsciiUtil.CaseInsensitiveKey(e[0]), e);
+        }
+    }
+
+    private static final String[][] DEPRECATEDLANGS = {
+        // {<deprecated>, <current>},
+        {"iw", "he"},
+        {"ji", "yi"},
+        {"in", "id"},
+    };
+
+    private LanguageTag(String tag) {
+        _languageTag = tag;
+    }
+
+    // Bit flags used by the language tag parser
+    private static final int LANG = 0x0001;
+    private static final int EXTL = 0x0002;
+    private static final int SCRT = 0x0004;
+    private static final int REGN = 0x0008;
+    private static final int VART = 0x0010;
+    private static final int EXTS = 0x0020;
+    private static final int EXTV = 0x0040;
+    private static final int PRIV = 0x0080;
+
+    public static LanguageTag parse(String langtag) throws LocaleSyntaxException {
+        if (langtag.length() < MINLEN) {
+            throw new LocaleSyntaxException("The specified tag '"
+                    + langtag + "' is too short");
+        }
+
+        if (langtag.endsWith(SEP)) {
+            // This code utilizes String#split, which drops off the last empty segment.
+            // We need to check if the tag ends with '-' here.
+            int erridx = langtag.length() - 1;
+            while (erridx - 1 >= 0 && langtag.charAt(erridx - 1) != SEPCHAR) {
+                erridx--;
+            }
+            throw new LocaleSyntaxException("The specified tag '"
+                    + langtag + "' ends with " + SEP, erridx);
+        }
+
+        LanguageTag t = new LanguageTag(langtag);
+
+        // Check if the tag is grandfathered
+        String[] gfmap = GRANDFATHERED.get(new AsciiUtil.CaseInsensitiveKey(langtag));
+        if (gfmap != null) {
+            t._grandfathered = gfmap[0];
+            // Preferred mapping
+            if (gfmap[1].length() > 0) {
+                t._language = gfmap[1];
+            }
+            return t;
+        }
+
+        // langtag       = language
+        //                 ["-" script]
+        //                 ["-" region]
+        //                 *("-" variant)
+        //                 *("-" extension)
+        //                 ["-" privateuse]
+
+        String[] subtags = langtag.split(SEP);
+        int idx = 0;
+        int extlangIdx = 0;
+        String extSingleton = null;
+        StringBuilder extBuf = null;
+        int next = LANG | PRIV;
+        String errorMsg = null;
+
+        PARSE:
+        while (true) {
+            if (idx >= subtags.length) {
+                break;
+            }
+            if ((next & LANG) != 0) {
+                if (isLanguageSubtag(subtags[idx])) {
+                    t._language = AsciiUtil.toLowerString(subtags[idx++]);
+                    next = EXTL | SCRT | REGN | VART | EXTS | PRIV;
+                    continue;
+                }
+            }
+            if ((next & EXTL) != 0) {
+                if (isExtlangSubtag(subtags[idx])) {
+                    if (extlangIdx == 0) {
+                        t._extlang = new String[3];
+                    }
+                    t._extlang[extlangIdx++] = AsciiUtil.toLowerString(subtags[idx++]);
+                    if (extlangIdx < 3) {
+                        next = EXTL | SCRT | REGN | VART | EXTS | PRIV;
+                    } else {
+                        next = SCRT | REGN | VART | EXTS | PRIV;
+                    }
+                    continue;
+                }
+            }
+            if ((next & SCRT) != 0) {
+                if (isScriptSubtag(subtags[idx])) {
+                    t._script = AsciiUtil.toTitleString(subtags[idx++]);
+                    next = REGN | VART | EXTS | PRIV;
+                    continue;
+                }
+            }
+            if ((next & REGN) != 0) {
+                if (isRegionSubtag(subtags[idx])) {
+                    t._region = AsciiUtil.toUpperString(subtags[idx++]);
+                    next = VART | EXTS | PRIV;
+                    continue;
+                }
+            }
+            if ((next & VART) != 0) {
+                if (isVariantSubtag(subtags[idx])) {
+                    if (t._variants == null) {
+                        t._variants = new TreeSet<String>();
+                    }
+                    t._variants.add(AsciiUtil.toLowerString(subtags[idx++]));
+                    next = VART | EXTS | PRIV;
+                    continue;
+                }
+            }
+            if ((next & EXTS) != 0) {
+                if (isExtensionSingleton(subtags[idx])) {
+                    if (extSingleton != null) {
+                        if (extBuf == null) {
+                            errorMsg = "The specified tag '"
+                                        + langtag + "' contains an incomplete extension: "
+                                        + extSingleton;
+                            break PARSE;
+                        }
+                        // Emit the previous extension key/value pair
+                        if (t._extensions == null) {
+                            t._extensions = new TreeSet<Extension>();
+                        }
+                        Extension e = new Extension(extSingleton.charAt(0), extBuf.toString());
+                        t._extensions.add(e);
+                    } else {
+                        if (t._extensions != null) {
+                            char extChar = AsciiUtil.toLower(subtags[idx].charAt(0));
+                            for (Extension e : t._extensions) {
+                                if (e.getSingleton() == extChar) {
+                                    errorMsg = "The specified tag '"
+                                                + langtag + "' contains duplicated extension: "
+                                                + extChar;
+                                    break PARSE;
+                                }
+                            }
+                        }
+                    }
+                    extSingleton = AsciiUtil.toLowerString(subtags[idx++]);
+                    extBuf = null; // Clear the extension value buffer
+                    next = EXTV;
+                    continue;
+                }
+            }
+            if ((next & EXTV) != 0) {
+                if (isExtensionSubtag(subtags[idx])) {
+                    if (extBuf == null) {
+                        extBuf = new StringBuilder(AsciiUtil.toLowerString(subtags[idx++]));
+                    } else {
+                        extBuf.append(SEP);
+                        extBuf.append(AsciiUtil.toLowerString(subtags[idx++]));
+                    }
+                    next = EXTS | EXTV | PRIV;
+                    continue;
+                }
+            }
+            if ((next & PRIV) != 0) {
+                if (AsciiUtil.caseIgnoreMatch(PRIVATEUSE, subtags[idx])) {
+                    // The rest of part will be private use value subtags
+                    StringBuilder puBuf = new StringBuilder();
+                    idx++;
+                    for (boolean bFirst = true ; idx < subtags.length; idx++) {
+                        if (!isPrivateuseValueSubtag(subtags[idx])) {
+                            errorMsg = "The specified tag '"
+                                        + langtag + "' contains an illegal private use subtag: "
+                                        + (subtags[idx].length() == 0 ? "<empty>" : subtags[idx]);
+                            break PARSE;
+                        }
+                        if (bFirst) {
+                            bFirst = false;
+                        } else {
+                            puBuf.append(SEP);
+                        }
+                        puBuf.append(AsciiUtil.toLowerString(subtags[idx]));
+                    }
+                    t._privateuse = puBuf.toString();
+                    if (t._privateuse.length() == 0) {
+                        // Empty privateuse value
+                        errorMsg = "The specified tag '"
+                                    + langtag + "' contains an empty private use subtag";
+                        // for error index to point 'x'
+                        idx--;
+                        break PARSE;
+                    }
+                    break;
+                }
+            }
+            // If we fell through here, it means this subtag is illegal
+            errorMsg = "The specified tag '" + langtag
+                        + "' contains an illegal subtag: "
+                        + (subtags[idx].length() == 0 ? "<empty>" : subtags[idx]);
+            break PARSE;
+        }
+
+        if (errorMsg == null) {
+            if (extSingleton != null) {
+                if (extBuf == null) {
+                    // extension singleton without following extension value
+                    errorMsg = "The specified tag '"
+                                + langtag + "' contains an incomplete extension: "
+                                + extSingleton;
+                } else {
+                    // Emit the last extension key/value pair
+                    if (t._extensions == null) {
+                        t._extensions = new TreeSet<Extension>();
+                    }
+                    Extension e = new Extension(extSingleton.charAt(0), extBuf.toString());
+                    t._extensions.add(e);
+                }
+            }
+        }
+
+        if (errorMsg != null) {
+            // restore the original string index
+            int errIndex = 0;
+            for (int i = 0; i < idx; i++) {
+                errIndex += (subtags[i].length() + 1);
+            }
+            throw new LocaleSyntaxException(errorMsg, errIndex);
+        }
+
+        return t;
+    
+    }
+
+    public String getTag() {
+        return _languageTag;
+    }
+
+    public String getLanguage() {
+        return _language;
+    }
+
+    public String getJDKLanguage() {
+        String lang = _language;
+        for (String[] langMap : DEPRECATEDLANGS) {
+            if (AsciiUtil.caseIgnoreCompare(lang, langMap[1]) == 0) {
+                // use the old code
+                lang = langMap[0];
+                break;
+            }
+        }
+        return lang;
+    }
+
+    public String getExtlang(int idx) {
+        if (_extlang != null && idx < _extlang.length) {
+            return _extlang[idx];
+        }
+        return null;
+    }
+
+    public String getScript() {
+        return _script;
+    }
+
+    public String getRegion() {
+        return _region;
+    }
+
+    public String getVariant() {
+        if (_variants != null) {
+            StringBuilder buf = new StringBuilder();
+            Iterator<String> itr = _variants.iterator();
+            while (itr.hasNext()) {
+                if (buf.length() > 0) {
+                    buf.append(SEP);
+                }
+                buf.append(itr.next());
+            }
+            return buf.toString();
+        }
+        return "";
+    }
+
+    public Set<String> getVarinats() {
+        return Collections.unmodifiableSet(_variants);
+    }
+
+    public Set<Extension> getExtensions() {
+        if (_extensions != null) {
+            return Collections.unmodifiableSet(_extensions);
+        }
+        return null;
+    }
+
+    public String getPrivateUse() {
+        return _privateuse;
+    }
+
+    public String getGrandfathered() {
+        return _grandfathered;
+    }
+
+    public static boolean isLanguageSubtag(String s) {
+        // language      = 2*3ALPHA            ; shortest ISO 639 code
+        //                 ["-" extlang]       ; sometimes followed by
+        //                                     ;   extended language subtags
+        //               / 4ALPHA              ; or reserved for future use
+        //               / 5*8ALPHA            ; or registered language subtag
+        return (s.length() >= 2) && (s.length() <= 8) && AsciiUtil.isAlphaString(s);
+    }
+
+    public static boolean isExtlangSubtag(String s) {
+        // extlang       = 3ALPHA              ; selected ISO 639 codes
+        //                 *2("-" 3ALPHA)      ; permanently reserved
+        return (s.length() == 3) && AsciiUtil.isAlphaString(s);
+    }
+
+    public static boolean isScriptSubtag(String s) {
+        // script        = 4ALPHA              ; ISO 15924 code
+        return (s.length() == 4) && AsciiUtil.isAlphaString(s);
+    }
+
+    public static boolean isRegionSubtag(String s) {
+        // region        = 2ALPHA              ; ISO 3166-1 code
+        //               / 3DIGIT              ; UN M.49 code
+        return ((s.length() == 2) && AsciiUtil.isAlphaString(s))
+                || ((s.length() == 3) && AsciiUtil.isNumericString(s));
+    }
+
+    public static boolean isVariantSubtag(String s) {
+        // variant       = 5*8alphanum         ; registered variants
+        //               / (DIGIT 3alphanum)
+        int len = s.length();
+        if (len >= 5 && len <= 8) {
+            return AsciiUtil.isAlphaNumericString(s);
+        }
+        if (len == 4) {
+            return AsciiUtil.isNumeric(s.charAt(0))
+                    && AsciiUtil.isAlphaNumeric(s.charAt(1))
+                    && AsciiUtil.isAlphaNumeric(s.charAt(2))
+                    && AsciiUtil.isAlphaNumeric(s.charAt(3));
+        }
+        return false;
+    }
+
+    public static boolean isExtensionSingleton(String s) {
+        // extension     = singleton 1*("-" (2*8alphanum))
+        return (s.length() == 1)
+                && AsciiUtil.isAlphaString(s)
+                && !AsciiUtil.caseIgnoreMatch(PRIVATEUSE, s);
+    }
+
+    public static boolean isExtensionSubtag(String s) {
+        // extension     = singleton 1*("-" (2*8alphanum))
+        return (s.length() >= 2) && (s.length() <= 8) && AsciiUtil.isAlphaNumericString(s);
+    }
+
+    public static boolean isPrivateuseValueSubtag(String s) {
+        // privateuse    = "x" 1*("-" (1*8alphanum))
+        return (s.length() >= 1) && (s.length() <= 8) && AsciiUtil.isAlphaNumericString(s);
+    }
+
+    /*
+     * Language tag extension key/value container
+     */
+    public static class Extension implements Comparable<Extension> {
+        private char _singleton;
+        private String _value;
+
+        public Extension(char singleton, String value) {
+            _singleton = AsciiUtil.toLower(singleton);
+            _value = value;
+        }
+
+        public char getSingleton() {
+            return _singleton;
+        }
+
+        public String getValue() {
+            return _value;
+        }
+
+        public int compareTo(Extension other) {
+            return (int)_singleton - (int)other._singleton;
+        }
+    }
+
+    public static String toLanguageTag(BaseLocale base, LocaleExtensions ext) {
+        StringBuilder buf = new StringBuilder();
+
+        // language
+        String language = base.getLanguage();
+        if (language.length() == 0) {
+            buf.append(UNDETERMINED);
+        } else {
+            if (isLanguageSubtag(language)) {
+                // if deprecated language code, map to the current one
+                for (String[] langMap : DEPRECATEDLANGS) {
+                    if (AsciiUtil.caseIgnoreCompare(language, langMap[0]) == 0) {
+                        language = langMap[1];
+                        break;
+                    }
+                }
+                buf.append(language);
+            } else {
+                buf.append(UNDETERMINED);
+            }
+        }
+
+        // script
+        String script = base.getScript();
+        if (script.length() > 0 && isScriptSubtag(script)) {
+            buf.append(SEP);
+            buf.append(script);
+        }
+
+        // region
+        String region = base.getRegion();
+        if (region.length() > 0 && isRegionSubtag(region)) {
+            buf.append(SEP);
+            buf.append(region);
+        }
+
+        // variant
+        String variant = AsciiUtil.toLowerString(base.getVariant());
+        if (variant.length() > 0) {
+            String[] variants = variant.split("_");
+            TreeSet<String> validVars = new TreeSet<String>();
+            for (String var : variants) {
+                if (isVariantSubtag(var)) {
+                    validVars.add(var);
+                }
+            }
+            if (validVars.size() > 0) {
+                Iterator<String> varIt = validVars.iterator();
+                while (varIt.hasNext()) {
+                    buf.append(SEP);
+                    buf.append(varIt.next());
+                }
+            }
+        }
+
+        if (ext != null && !ext.equals(LocaleExtensions.EMPTY_EXTENSIONS)) {
+            String exttags = ext.getCanonicalString();
+            if (exttags.length() > 0) {
+                // extensions including private use
+                buf.append(SEP);
+                buf.append(exttags);
+            }
+        }
+        return buf.toString();
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/locale/LocaleExtensions.java b/main/classes/core/src/com/ibm/icu/impl/locale/LocaleExtensions.java
new file mode 100644
index 0000000..fd9dd56
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/locale/LocaleExtensions.java
@@ -0,0 +1,266 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.locale;
+
+import java.util.Collections;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+public final class LocaleExtensions {
+    public static final LocaleExtensions EMPTY_EXTENSIONS = new LocaleExtensions("");
+
+    private String _extensions;
+    private TreeMap<Character, String> _extMap;
+    private TreeMap<String, String> _kwdMap;
+
+    private static final String LOCALEEXTSEP = "-";
+    private static final String LDMLSINGLETON = "u";
+    private static final String PRIVUSE = "x";
+    private static final int MINLEN = 3; // minimum length of string representation "x-?"
+
+
+    private LocaleExtensions(String extensions) {
+        _extensions = extensions == null ? "" : extensions;
+    }
+
+    public static LocaleExtensions getInstance(String extensions) {
+        if (extensions == null || extensions.length() == 0) {
+            return EMPTY_EXTENSIONS;
+        }
+
+        extensions = AsciiUtil.toLowerString(extensions).replaceAll("_", LOCALEEXTSEP);
+
+        if (extensions.length() < MINLEN) {
+            // malformed extensions - too short
+            return new LocaleExtensions(extensions);
+        }
+
+        TreeMap<Character, String> extMap = null;
+        TreeMap<String, String> kwdMap = null;
+        boolean bParseFailure = false;
+
+        // parse the extension subtags
+        String[] subtags = extensions.split(LOCALEEXTSEP);
+        String letter = null;
+        extMap = new TreeMap<Character, String>();
+        StringBuilder buf = new StringBuilder();
+        boolean inLocaleKeywords = false;
+        boolean inPrivateUse = false;
+        String kwkey = null;
+
+        for (int i = 0; i < subtags.length; i++) {
+            if (subtags[i].length() == 0) {
+                // empty subtag
+                bParseFailure = true;
+                break;
+            }
+            if (subtags[i].length() == 1 && !inPrivateUse) {
+                if (letter != null) {
+                    // next extension singleton
+                    if (extMap.containsKey(subtags[i])) {
+                        // duplicated singleton extension letter
+                        bParseFailure = true;
+                        break;
+                    }
+                    // write out the previous extension
+                    if (inLocaleKeywords) {
+                        if (kwkey != null) {
+                            // no locale keyword key
+                            bParseFailure = true;
+                            break;
+                        }
+                        // creating a single string including locale keyword key/type pairs
+                        keywordsToString(kwdMap, buf);
+                        inLocaleKeywords = false;
+                    }
+                    if (buf.length() == 0) {
+                        // empty subtag
+                        bParseFailure = true;
+                        break;
+                    }
+                    extMap.put(Character.valueOf(letter.charAt(0)), buf.toString().intern());
+                }
+                // preparation for next extension
+                if (subtags[i].equals(LDMLSINGLETON)) {
+                    kwdMap = new TreeMap<String, String>();
+                    inLocaleKeywords = true;
+                } else if (subtags[i].equals(PRIVUSE)) {
+                    inPrivateUse = true;
+                }
+                buf.setLength(0);
+                letter = subtags[i];
+                continue;
+            }
+            if (inLocaleKeywords) {
+                if (kwkey == null) {
+                    kwkey = subtags[i];
+                } else {
+                    kwdMap.put(kwkey.intern(), subtags[i].intern());
+                    kwkey = null;
+                }
+            } else {
+                // append an extension/prvate use subtag
+                if (buf.length() > 0) {
+                    buf.append(LOCALEEXTSEP);
+                }
+                buf.append(subtags[i]);
+            }
+        }
+        if (!bParseFailure) {
+            // process the last extension
+            if (inLocaleKeywords) {
+                if (kwkey != null) {
+                    bParseFailure = true;
+                } else {
+                    // creating a single string including locale keyword key/type pairs
+                    keywordsToString(kwdMap, buf);
+                }
+            }
+            if (buf.length() == 0) {
+                // empty subtag at the end
+                bParseFailure = true;
+            } else {
+                extMap.put(Character.valueOf(letter.charAt(0)), buf.toString().intern());
+            }
+        }
+
+        if (bParseFailure) {
+            // parsing the extension string failed.
+            // do not set any partial results in the result.
+            return new LocaleExtensions(extensions);
+        }
+
+        String canonical = extensionsToCanonicalString(extMap);
+        LocaleExtensions le = new LocaleExtensions(canonical);
+        le._extMap = extMap;
+        le._kwdMap = kwdMap;
+
+        return le;
+    }
+
+    // This method assumes extension map and locale keyword map
+    // are all in canonicalized format.  This method is only used by
+    // InternalLocaleBuilder.
+    public static LocaleExtensions getInstance(TreeMap<Character, String> extMap, TreeMap<String ,String> kwdMap) {
+        if (extMap == null) {
+            return EMPTY_EXTENSIONS;
+        }
+        String canonical = extensionsToCanonicalString(extMap);
+        LocaleExtensions le = new LocaleExtensions(canonical);
+        le._extMap = extMap;
+        le._kwdMap = kwdMap;
+
+        return le;
+    }
+
+    public boolean equals(Object obj) {
+        return (this == obj) ||
+            ((obj instanceof LocaleExtensions) && _extensions == (((LocaleExtensions)obj)._extensions));
+    }
+
+    public int hashCode() {
+        return _extensions.hashCode();
+    }
+
+    public Set<Character> getExtensionKeys() {
+        if (_extMap != null) {
+            return Collections.unmodifiableSet(_extMap.keySet());
+        }
+        return null;
+    }
+
+    public String getExtensionValue(char key) {
+        if (_extMap != null) {
+            return _extMap.get(Character.valueOf(key));
+        }
+        return null;
+    }
+
+    public Set<String> getLDMLKeywordKeys() {
+        if (_kwdMap != null) {
+            return Collections.unmodifiableSet(_kwdMap.keySet());
+        }
+        return null;
+    }
+
+    public String getLDMLKeywordType(String key) {
+        if (key == null) {
+            throw new NullPointerException("LDML key must not be null");
+        }
+        if (_kwdMap != null) {
+            return _kwdMap.get(key);
+        }
+        return null;
+    }
+
+    public String getCanonicalString() {
+        return _extensions;
+    }
+
+    public String toString() {
+        return _extensions;
+    }
+
+    private static String extensionsToCanonicalString(TreeMap<Character, String> extMap) {
+        if (extMap == null || extMap.size() == 0) {
+            return "";
+        }
+        StringBuilder canonicalbuf = new StringBuilder();
+        String privUseStr = null;
+        if (extMap != null) {
+            Set<Map.Entry<Character, String>> entries = extMap.entrySet();
+            for (Map.Entry<Character, String> entry : entries) {
+                Character key = entry.getKey();
+                String value = entry.getValue();
+                if (key.charValue() == PRIVUSE.charAt(0)) {
+                    privUseStr = value;
+                    continue;
+                }
+                if (canonicalbuf.length() > 0) {
+                    canonicalbuf.append(LOCALEEXTSEP);
+                }
+                canonicalbuf.append(key);
+                canonicalbuf.append(LOCALEEXTSEP);
+                canonicalbuf.append(value);
+            }
+        }
+        if (privUseStr != null) {
+            if (canonicalbuf.length() > 0) {
+                canonicalbuf.append(LOCALEEXTSEP);
+            }
+            canonicalbuf.append(PRIVUSE);
+            canonicalbuf.append(LOCALEEXTSEP);
+            canonicalbuf.append(privUseStr);
+        }
+        return canonicalbuf.toString().intern();
+    }
+
+    public static void keywordsToString(TreeMap<String, String> map, StringBuilder buf) {
+        Set<Map.Entry<String, String>> entries = map.entrySet();
+        for (Map.Entry<String, String> entry : entries) {
+            if (buf.length() > 0) {
+                buf.append(LOCALEEXTSEP);
+            }
+            buf.append(entry.getKey());
+            buf.append(LOCALEEXTSEP);
+            buf.append(entry.getValue());
+        }
+    }
+
+    public static boolean isValidExtensionKey(char key) {
+        return AsciiUtil.isAlphaNumeric(key);
+    }
+
+    public static boolean isValidLDMLKey(String key) {
+        return (key.length() == 2) && AsciiUtil.isAlphaNumericString(key);
+    }
+
+    public static boolean isValidLDMLType(String type) {
+        return (type.length() >= 3) && (type.length() <= 8) && AsciiUtil.isAlphaNumericString(type);
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/locale/LocaleObjectCache.java b/main/classes/core/src/com/ibm/icu/impl/locale/LocaleObjectCache.java
new file mode 100644
index 0000000..c30c872
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/locale/LocaleObjectCache.java
@@ -0,0 +1,78 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.locale;
+
+import java.lang.ref.Reference;
+import java.lang.ref.ReferenceQueue;
+import java.lang.ref.WeakReference;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class LocaleObjectCache<K, V> {
+
+    private ConcurrentHashMap<K, WeakValueRef<V>> _map = new ConcurrentHashMap<K, WeakValueRef<V>>();
+    private ReferenceQueue<V> _rq = new ReferenceQueue<V>();
+
+    public LocaleObjectCache() {
+    }
+
+    public V get(Object key) {
+        expungeStaleEntries();
+        WeakValueRef<V> ref = _map.get(key);
+        if (ref != null) {
+            return ref.get();
+        }
+        return null;
+    }
+
+    /*
+     * Unlike Map#put, this method returns non-null value actually
+     * in the cache, even no values for the key was not available
+     * before.
+     */
+    public V put(K key, V value) {
+        expungeStaleEntries();
+        WeakValueRef<V> ref = _map.get(key);
+        if (ref != null) {
+            // Make sure if another thread put the new value
+            V valInCache = ref.get();
+            if (valInCache != null) {
+                return valInCache;
+            }
+        }
+        // We do not synchronize the internal map here.
+        // In the worst case, another thread may put the new
+        // value with the same contents, but it should not cause
+        // any serious problem.
+        _map.put(key, new WeakValueRef<V>(key, value, _rq));
+        return value;
+    }
+
+    private void expungeStaleEntries() {
+        Reference<? extends V> val;
+        while ((val = _rq.poll()) != null) {
+            Object key = ((WeakValueRef<?>)val).getKey();
+            _map.remove(key);
+        }
+    }
+
+    private static class WeakValueRef<V> extends WeakReference<V> {
+        private Object _key;
+
+        public WeakValueRef(Object key, V value, ReferenceQueue<V> rq) {
+            super(value, rq);
+            _key = key;
+        }
+
+        public V get() {
+            return super.get();
+        }
+
+        public Object getKey() {
+            return _key;
+        }
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/impl/locale/LocaleSyntaxException.java b/main/classes/core/src/com/ibm/icu/impl/locale/LocaleSyntaxException.java
new file mode 100644
index 0000000..14d1130
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/impl/locale/LocaleSyntaxException.java
@@ -0,0 +1,27 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.impl.locale;
+
+public class LocaleSyntaxException extends Exception {
+
+    private static final long serialVersionUID = 1L;
+
+    private int _index = -1;
+
+    public LocaleSyntaxException(String msg) {
+        this(msg, 0);
+    }
+
+    public LocaleSyntaxException(String msg, int errorIndex) {
+        super(msg);
+        _index = errorIndex;
+    }
+
+    public int getErrorIndex() {
+        return _index;
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/lang/UCharacter.java b/main/classes/core/src/com/ibm/icu/lang/UCharacter.java
new file mode 100644
index 0000000..58508f7
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/lang/UCharacter.java
@@ -0,0 +1,6459 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2009, 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.IllegalIcuArgumentException;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.UBiDiProps;
+import com.ibm.icu.impl.UCaseProps;
+import com.ibm.icu.impl.UCharacterName;
+import com.ibm.icu.impl.UCharacterNameChoice;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.UCharacterUtility;
+import com.ibm.icu.impl.UPropertyAliases;
+import com.ibm.icu.lang.UCharacterEnums.ECharacterCategory;
+import com.ibm.icu.lang.UCharacterEnums.ECharacterDirection;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.text.UTF16;
+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]*/
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int SUNDANESE_ID = 155; /* [1B80] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int LEPCHA_ID = 156; /* [1C00] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int OL_CHIKI_ID = 157; /* [1C50] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int CYRILLIC_EXTENDED_A_ID = 158; /* [2DE0] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int VAI_ID = 159; /* [A500] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int CYRILLIC_EXTENDED_B_ID = 160; /* [A640] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int SAURASHTRA_ID = 161; /* [A880] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int KAYAH_LI_ID = 162; /* [A900] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int REJANG_ID = 163; /* [A930] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int CHAM_ID = 164; /* [AA00] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int ANCIENT_SYMBOLS_ID = 165; /* [10190] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int PHAISTOS_DISC_ID = 166; /* [101D0] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int LYCIAN_ID = 167; /* [10280] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int CARIAN_ID = 168; /* [102A0] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int LYDIAN_ID = 169; /* [10920] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final int MAHJONG_TILES_ID = 170; /* [1F000] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        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]*/
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final UnicodeBlock SUNDANESE = new UnicodeBlock("SUNDANESE", SUNDANESE_ID); /* [1B80] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final UnicodeBlock LEPCHA = new UnicodeBlock("LEPCHA", LEPCHA_ID); /* [1C00] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final UnicodeBlock OL_CHIKI = new UnicodeBlock("OL_CHIKI", OL_CHIKI_ID); /* [1C50] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final UnicodeBlock CYRILLIC_EXTENDED_A = new UnicodeBlock("CYRILLIC_EXTENDED_A", CYRILLIC_EXTENDED_A_ID); /* [2DE0] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final UnicodeBlock VAI = new UnicodeBlock("VAI", VAI_ID); /* [A500] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final UnicodeBlock CYRILLIC_EXTENDED_B = new UnicodeBlock("CYRILLIC_EXTENDED_B", CYRILLIC_EXTENDED_B_ID); /* [A640] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final UnicodeBlock SAURASHTRA = new UnicodeBlock("SAURASHTRA", SAURASHTRA_ID); /* [A880] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final UnicodeBlock KAYAH_LI = new UnicodeBlock("KAYAH_LI", KAYAH_LI_ID); /* [A900] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final UnicodeBlock REJANG = new UnicodeBlock("REJANG", REJANG_ID); /* [A930] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final UnicodeBlock CHAM = new UnicodeBlock("CHAM", CHAM_ID); /* [AA00] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final UnicodeBlock ANCIENT_SYMBOLS = new UnicodeBlock("ANCIENT_SYMBOLS", ANCIENT_SYMBOLS_ID); /* [10190] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final UnicodeBlock PHAISTOS_DISC = new UnicodeBlock("PHAISTOS_DISC", PHAISTOS_DISC_ID); /* [101D0] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final UnicodeBlock LYCIAN = new UnicodeBlock("LYCIAN", LYCIAN_ID); /* [10280] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final UnicodeBlock CARIAN = new UnicodeBlock("CARIAN", CARIAN_ID); /* [102A0] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final UnicodeBlock LYDIAN = new UnicodeBlock("LYDIAN", LYDIAN_ID); /* [10920] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        public static final UnicodeBlock MAHJONG_TILES = new UnicodeBlock("MAHJONG_TILES", MAHJONG_TILES_ID); /* [1F000] */
+
+        /**
+         * @stable ICU 4.0
+         */
+        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<String, UnicodeBlock> m = null;
+            if (mref != null) {
+                m = mref.get();
+            }
+            if (m == null) {
+                m = new HashMap<String, UnicodeBlock>(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<Map<String, UnicodeBlock>>(m);
+            }
+            UnicodeBlock b = m.get(trimBlockName(blockName));
+            if (b == null) {
+                throw new IllegalArgumentException();
+            }
+            return b;
+        }
+        private static SoftReference<Map<String, UnicodeBlock>> 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 {
+            // The following will only be true if COUNT or the array BLOCKS_
+            // is every changed to be inconsistent
+            ///CLOVER:OFF
+            if (COUNT!=BLOCKS_.length) {
+                throw new java.lang.IllegalStateException("UnicodeBlock fields are inconsistent!");
+            }
+            ///CLOVER:ON
+        }
+        
+        /**
+         * 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;
+            /* Values were tested for "int ch" from -100000000 to 100000000 and
+             * none of the values ever reached the "if(mant==0)" or
+             * "else if(mant>9)"
+             */
+            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:
+            /* Values were tested for "int ch" from -100000000 to 100000000 and
+             * none of the values ever reached the "default" case
+             */
+            default: if(exp!=0) 
+                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: if(exp!=0)
+                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 character (categories "Zs" or "Zl" or "Zp"), but is not
+     *      also a no-break space (&#92u00A0 or &#92u2007 or &#92u202F).
+     * <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(), but it may not return
+     * the exactly same results because of the Unicode version
+     * difference.
+     * @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 != FIGURE_SPACE_) && (ch != NARROW_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)
+    {
+        ///CLOVER:OFF
+        // NAME_ is always initialized when the class is initialized
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        ///CLOVER:ON
+        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)
+    {
+        ///CLOVER:OFF
+        // NAME_ is always initialized when the class is initialized
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        ///CLOVER:ON
+        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) {
+        ///CLOVER:OFF
+        // NAME_ is always initialized when the class is initialized
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        ///CLOVER:ON
+        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;
+        }
+        
+        ///CLOVER:OFF
+        // NAME_ is always initialized when the class is initialized
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        ///CLOVER:ON
+        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){
+        ///CLOVER:OFF
+        // NAME_ is always initialized when the class is initialized
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        ///CLOVER:ON
+        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){
+        ///CLOVER:OFF
+        // NAME_ is always initialized when the class is initialized
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        ///CLOVER:ON
+        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){
+        ///CLOVER:OFF
+        // NAME_ is always initialized when the class is initialized
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        ///CLOVER:ON
+        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) {
+        int propEnum = PNAMES_.getPropertyEnum(propertyAlias);
+        if (propEnum == UProperty.UNDEFINED) {
+            throw new IllegalIcuArgumentException("Invalid name: " + propertyAlias);
+        }
+        return propEnum;
+    }
+
+    /**
+     * 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) {
+        int propEnum = PNAMES_.getPropertyValueEnum(property, valueAlias);
+        if (propEnum == UProperty.UNDEFINED) {
+            throw new IllegalIcuArgumentException("Invalid name: " + valueAlias);
+        }
+        return propEnum;
+    }
+      
+    /**
+     * 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
+        // The following code is not used anywhere in this private class
+        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(){
+        ///CLOVER:OFF
+        // NAME_ is always initialized when the class is initialized
+        if(NAME_==null){
+            throw new RuntimeException("Could not load unames.icu");
+        }
+        ///CLOVER:ON
+        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(){
+        ///CLOVER:OFF
+        // NAME_ is always initialized when the class is initialized
+        if(NAME_==null){
+            throw new RuntimeException("Could not load unames.icu");
+        }
+        ///CLOVER:ON
+        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(){
+        ///CLOVER:OFF
+        // NAME_ is always initialized when the class is initialized
+        if(NAME_==null){
+            throw new MissingResourceException("Could not load unames.icu","","");
+        }
+        ///CLOVER:ON
+        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) {
+            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 (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 (PROPERTY_.getAdditional(ch, 2)& GCB_MASK)>>GCB_SHIFT;
+                case UProperty.SENTENCE_BREAK:
+                    return (PROPERTY_.getAdditional(ch, 2)& SB_MASK)>>SB_SHIFT;
+                case UProperty.WORD_BREAK:
+                    return (PROPERTY_.getAdditional(ch, 2)& WB_MASK)>>WB_SHIFT;
+                /* Values were tested for variable type from Integer.MIN_VALUE
+                 * to UProperty.INT_LIMIT and none would not reach the default case.
+                 */
+                ///CLOVER:OFF
+                default: return 0; /* undefined */
+                ///CLOVER:ON
+                }
+            } 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 The property enum value.
+     * @param codepoint The codepoint value.
+     * @param nameChoice The choice of the name.
+     * @return value as string
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    ///CLOVER:OFF
+    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");
+    }
+    ///CLOVER:ON
+
+    /**
+     * 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;
+                /* Values were tested for variable type from Integer.MIN_VALUE
+                 * to UProperty.INT_LIMIT and none would not reach the default case.
+                 */
+                ///CLOVER:OFF
+                default: return -1; // undefined
+                ///CLOVER:ON
+            }
+        }
+        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
+     */
+    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;
+    }
+
+    /**
+     * 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
+     */
+    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;
+    }
+
+    /**
+     * 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
+     */
+    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;
+    }
+
+    /**
+     * 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
+     */
+    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;
+    }
+
+    /**
+     * 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_ = UCharacterName.getInstance();
+
+    /**
+     * Singleton object encapsulating the imported pnames.icu property aliases
+     */
+    static UPropertyAliases PNAMES_ = UPropertyAliases.getInstance();
+
+    // 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){
+            ///CLOVER:OFF
+            // This part of code is initialize as part of the class
+            throw new MissingResourceException(e.getMessage(),"","");
+            ///CLOVER:ON
+        }
+
+        /*
+         * 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) {
+            ///CLOVER:OFF
+            // This part of code is initialize as part of the class
+            csp=UCaseProps.getDummy();
+            ///CLOVER:ON
+        }
+        gCsp=csp;
+
+        UBiDiProps bdp;
+        try {
+            bdp=UBiDiProps.getSingleton();
+        } catch(IOException e) {
+            ///CLOVER:OFF
+            // This part of code is initialize as part of the class
+            bdp=UBiDiProps.getDummy();
+            ///CLOVER:ON
+        }
+        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;
+
+    /**
+     * Figure space code point
+     */
+    private static final int FIGURE_SPACE_ = 0x2007;
+
+    /**
+     * Narrow no break space code point
+     */
+    private static final int NARROW_NO_BREAK_SPACE_ = 0x202F;
+
+    /**
+     * 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 > 0xff3a && 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) {
+                // TODO: Tested all the values from 0 ... UTF16.LEAD_SURROGATE_MIN_VALUE 
+                // and UTF16.LEAD_SURROGATE_MAX_VALUE ... UTF16.SUPPLEMENTARY_MIN_VALUE
+                // but it never results into the catch section of the try-catch
+                ///CLOVER:OFF
+                return PROPERTY_INITIAL_VALUE_;
+                ///CLOVER:ON
+            }
+        }
+        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/main/classes/core/src/com/ibm/icu/lang/UCharacterCategory.java b/main/classes/core/src/com/ibm/icu/lang/UCharacterCategory.java
new file mode 100644
index 0000000..60c0a64
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/lang/UCharacterDirection.java b/main/classes/core/src/com/ibm/icu/lang/UCharacterDirection.java
new file mode 100644
index 0000000..884c6be
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/lang/UCharacterEnums.java b/main/classes/core/src/com/ibm/icu/lang/UCharacterEnums.java
new file mode 100644
index 0000000..d1e8c26
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/lang/UCharacterNameIterator.java b/main/classes/core/src/com/ibm/icu/lang/UCharacterNameIterator.java
new file mode 100644
index 0000000..ad68974
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/lang/UCharacterNameIterator.java
@@ -0,0 +1,334 @@
+/*
+******************************************************************************
+* Copyright (C) 1996-2009, 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 ValueIterator.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_)" would not return true
+                    // because it can never be reached due to:
+                    // 1) It has already been checked earlier
+                    // 2) When m_current_ is updated earlier, it returns true
+                    // 3) No updates on m_limit_*/
+                    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/main/classes/core/src/com/ibm/icu/lang/UCharacterTypeIterator.java b/main/classes/core/src/com/ibm/icu/lang/UCharacterTypeIterator.java
new file mode 100644
index 0000000..6025a98
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/lang/UProperty.java b/main/classes/core/src/com/ibm/icu/lang/UProperty.java
new file mode 100644
index 0000000..c88c564
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/lang/UProperty.java
@@ -0,0 +1,835 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2009, 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 --------------------------------------------------
+
+    /**
+     * Special value indicating undefined property.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final int UNDEFINED = -1;
+
+    /** 
+     * <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/main/classes/core/src/com/ibm/icu/lang/UScript.java b/main/classes/core/src/com/ibm/icu/lang/UScript.java
new file mode 100644
index 0000000..72973fa
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/lang/UScript.java
@@ -0,0 +1,890 @@
+/**
+*******************************************************************************
+* Copyright (C) 2001-2009 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
+     * @stable ICU 4.0
+     */
+    public static final int IMPERIAL_ARAMAIC              = 116;/* Armi */
+
+    /**
+     * ISO 15924 script code
+     * @stable ICU 4.0
+     */
+    public static final int AVESTAN                       = 117;/* Avst */
+
+    /**
+     * ISO 15924 script code
+     * @stable ICU 4.0
+     */
+    public static final int CHAKMA                        = 118;/* Cakm */
+
+    /**
+     * ISO 15924 script code
+     * @stable ICU 4.0
+     */
+    public static final int KOREAN                        = 119;/* Kore */
+
+    /**
+     * ISO 15924 script code
+     * @stable ICU 4.0
+     */
+    public static final int KAITHI                        = 120;/* Kthi */
+
+    /**
+     * ISO 15924 script code
+     * @stable ICU 4.0
+     */
+    public static final int MANICHAEAN                    = 121;/* Mani */
+
+    /**
+     * ISO 15924 script code
+     * @stable ICU 4.0
+     */
+    public static final int INSCRIPTIONAL_PAHLAVI         = 122;/* Phli */
+
+    /**
+     * ISO 15924 script code
+     * @stable ICU 4.0
+     */
+    public static final int PSALTER_PAHLAVI               = 123;/* Phlp */
+
+    /**
+     * ISO 15924 script code
+     * @stable ICU 4.0
+     */
+    public static final int BOOK_PAHLAVI                  = 124;/* Phlv */
+
+    /**
+     * ISO 15924 script code
+     * @stable ICU 4.0
+     */
+    public static final int INSCRIPTIONAL_PARTHIAN        = 125;/* Prti */
+
+    /**
+     * ISO 15924 script code
+     * @stable ICU 4.0
+     */
+    public static final int SAMARITAN                     = 126;/* Samr */
+
+    /**
+     * ISO 15924 script code
+     * @stable ICU 4.0
+     */
+    public static final int TAI_VIET                      = 127;/* Tavt */
+
+    /**
+     * ISO 15924 script code
+     * @stable ICU 4.0
+     */
+    public static final int MATHEMATICAL_NOTATION         = 128;/* Zmth */
+
+    /**
+     * ISO 15924 script code
+     * @stable ICU 4.0
+     */
+    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) {
+            /* This part seems to never be called since "UResourceBundle.getBundleInstance"
+             * corrects this by setting to ICUResourceBundle.FROM_DEFAULT
+             * when such an invalid locale is passed.
+             */
+            ///CLOVER:OFF
+            return null;
+            ///CLOVER:ON
+        }
+        
+        rb = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
+        
+        // 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/main/classes/core/src/com/ibm/icu/lang/UScriptRun.java b/main/classes/core/src/com/ibm/icu/lang/UScriptRun.java
new file mode 100644
index 0000000..46f15a1
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/lang/UScriptRun.java
@@ -0,0 +1,628 @@
+/*
+ *******************************************************************************
+ *
+ *   Copyright (C) 1999-2009, 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 If invalid arguments are passed.
+     *
+     * @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/main/classes/core/src/com/ibm/icu/lang/package.html b/main/classes/core/src/com/ibm/icu/lang/package.html
new file mode 100644
index 0000000..913282d
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/math/BigDecimal.java b/main/classes/core/src/com/ibm/icu/math/BigDecimal.java
new file mode 100644
index 0000000..3f6ef6d
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/math/BigDecimal.java
@@ -0,0 +1,3882 @@
+/* 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.lang.UCharacter;
+
+/* ------------------------------------------------------------------ */
+/* BigDecimal -- Decimal arithmetic for Java                          */
+/* ------------------------------------------------------------------ */
+/* Copyright IBM Corporation, 1996-2009.  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<BigDecimal> {
+    // 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 */
+    /* ---------------------------------------------------------------- */
+
+    /**
+     * 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;
+    }
+
+    /**
+     * 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 = -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 = -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
+        this((new java.math.BigDecimal(num)).toString());
+        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) -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 = -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 = -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>.
+     * @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(BigDecimal)} 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>.
+     * @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 = -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;
+    }
+
+    /**
+     * 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(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 = -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 -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 -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 -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 = -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 != -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.]
+    }
+
+    /**
+     * 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());
+    }
+
+    /**
+     * 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 (-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 = -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 = -euse;
+                } else
+                    csign = '+';
+                sb.append('E').append(csign).append(euse);
+            }
+            rec = new char[sb.length()];
+            int srcEnd = sb.length();
+            if (0 != srcEnd) {
+                sb.getChars(0, srcEnd, 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 = (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 = -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=ca10/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 != -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, -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 (-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 - (-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 != -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+(BM)
+     * </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 = -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/main/classes/core/src/com/ibm/icu/math/MathContext.java b/main/classes/core/src/com/ibm/icu/math/MathContext.java
new file mode 100644
index 0000000..725186a
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/math/package.html b/main/classes/core/src/com/ibm/icu/math/package.html
new file mode 100644
index 0000000..6336ead
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/ArabicShaping.java b/main/classes/core/src/com/ibm/icu/text/ArabicShaping.java
new file mode 100644
index 0000000..6806b1f
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/ArabicShaping.java
@@ -0,0 +1,1942 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2009, 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
+    private boolean spacesRelativeToTextBeginEnd;
+    private char tailChar;
+
+    /**
+     * 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);
+        }
+        /* Validate input options */
+        if ( ((options&TASHKEEL_MASK) > 0) &&
+             !(((options & TASHKEEL_MASK)==TASHKEEL_BEGIN)  ||
+               ((options & TASHKEEL_MASK)==TASHKEEL_END )   ||
+               ((options & TASHKEEL_MASK)==TASHKEEL_RESIZE )||
+               ((options & TASHKEEL_MASK)==TASHKEEL_REPLACE_BY_TATWEEL)) ){
+            throw new IllegalArgumentException("Wrong Tashkeel argument");
+        }
+
+       ///CLOVER:OFF
+       //According to Steven Loomis, the code is unreachable when you OR all the constants within the if statements
+       if(((options&LAMALEF_MASK) > 0)&&
+              !(((options & LAMALEF_MASK)==LAMALEF_BEGIN)  ||
+                ((options & LAMALEF_MASK)==LAMALEF_END )   ||
+                ((options & LAMALEF_MASK)==LAMALEF_RESIZE )||
+                 ((options & LAMALEF_MASK)==LAMALEF_AUTO)  ||
+                 ((options & LAMALEF_MASK)==LAMALEF_NEAR))){
+           throw new IllegalArgumentException("Wrong Lam Alef argument");
+       }
+       ///CLOVER:ON
+       
+       /* Validate Tashkeel (Tashkeel replacement options should be enabled in shaping mode only)*/
+       if(((options&TASHKEEL_MASK) > 0) && (options&LETTERS_MASK) == LETTERS_UNSHAPE) {
+            throw new IllegalArgumentException("Tashkeel replacement should not be enabled in deshaping mode ");
+       }
+       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 & LAMALEF_MASK) == LAMALEF_RESIZE) {
+            throw new ArabicShapingException("Cannot shape in place with length option resize.");
+        }
+        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 & LAMALEF_MASK) == LAMALEF_RESIZE) &&
+            ((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 );
+        /* Validate options */
+        spacesRelativeToTextBeginEnd = ( (options & SPACES_RELATIVE_TO_TEXT_MASK) == SPACES_RELATIVE_TO_TEXT_BEGIN_END );
+        if ( (options&SHAPE_TAIL_TYPE_MASK) == SHAPE_TAIL_NEW_UNICODE){
+            tailChar = NEW_TAIL_CHAR;
+        } else {
+            tailChar = OLD_TAIL_CHAR;
+        }
+    }
+    
+    /* Seen Tail options */ 
+    /**
+     * Memory option: the result must have the same length as the source.
+     * Shaping mode: The SEEN family character will expand into two characters using space near 
+     *               the SEEN family character(i.e. the space after the character).
+     *               if there are no spaces found, ArabicShapingException will be thrown
+     *
+     * De-shaping mode: Any Seen character followed by Tail character will be
+     *                  replaced by one cell Seen and a space will replace the Tail.
+     * Affects: Seen options
+     */
+    public static final int SEEN_TWOCELL_NEAR = 0x200000;
+
+    /** Bit mask for Seen memory options. */
+    public static final int SEEN_MASK = 0x700000;
+
+    /* YehHamza options */ 
+    /**
+     * Memory option: the result must have the same length as the source.
+     * Shaping mode: The YEHHAMZA character will expand into two characters using space near it 
+     *              (i.e. the space after the character)
+     *               if there are no spaces found, ArabicShapingException will be thrown
+     *
+     * De-shaping mode: Any Yeh (final or isolated) character followed by Hamza character will be
+     *                  replaced by one cell YehHamza and space will replace the Hamza.
+     * Affects: YehHamza options
+     */
+    public static final int YEHHAMZA_TWOCELL_NEAR  = 0x1000000;
+
+
+    /** Bit mask for YehHamza memory options. */
+    public static final int YEHHAMZA_MASK = 0x3800000;
+
+    /* New Tashkeel options */ 
+    /**
+     * Memory option: the result must have the same length as the source.
+     * Shaping mode: Tashkeel characters will be replaced by spaces. 
+     *               Spaces will be placed at beginning of the buffer
+     *
+     * De-shaping mode: N/A
+     * Affects: Tashkeel options
+     */
+    public static final int TASHKEEL_BEGIN = 0x40000;
+
+    /**
+     * Memory option: the result must have the same length as the source.
+     * Shaping mode: Tashkeel characters will be replaced by spaces. 
+     *               Spaces will be placed at end of the buffer
+     *
+     * De-shaping mode: N/A
+     * Affects: Tashkeel options
+     */
+    public static final int TASHKEEL_END = 0x60000;
+
+    /**
+     * Memory option: allow the result to have a different length than the source.
+     * Shaping mode: Tashkeel characters will be removed, buffer length will shrink. 
+     * De-shaping mode: N/A 
+     *
+     * Affects: Tashkeel options
+     */
+    public static final int TASHKEEL_RESIZE = 0x80000;
+
+    /**
+     * Memory option: the result must have the same length as the source.
+     * Shaping mode: Tashkeel characters will be replaced by Tatweel if it is connected to adjacent
+     *               characters (i.e. shaped on Tatweel) or replaced by space if it is not connected.
+     *
+     * De-shaping mode: N/A
+     * Affects: YehHamza options
+     */
+    public static final int TASHKEEL_REPLACE_BY_TATWEEL = 0xC0000;
+
+    /** Bit mask for Tashkeel replacement with Space or Tatweel memory options. */
+    public static final int TASHKEEL_MASK  = 0xE0000;
+    
+    /* Space location Control options */ 
+    /**
+     * This option effects the meaning of BEGIN and END options. if this option is not used the default
+     * for BEGIN and END will be as following: 
+     * The Default (for both Visual LTR, Visual RTL and Logical Text)
+     *           1. BEGIN always refers to the start address of physical memory.
+     *           2. END always refers to the end address of physical memory.
+     *
+     * If this option is used it will swap the meaning of BEGIN and END only for Visual LTR text. 
+     *
+     * The affect on BEGIN and END Memory Options will be as following:
+     *    A. BEGIN For Visual LTR text: This will be the beginning (right side) of the visual text 
+     *       (corresponding to the physical memory address end, same as END in default behavior)
+     *    B. BEGIN For Logical text: Same as BEGIN in default behavior. 
+     *    C. END For Visual LTR text: This will be the end (left side) of the visual text. (corresponding to  
+     *      the physical memory address beginning, same as BEGIN in default behavior) 
+     *    D. END For Logical text: Same as END in default behavior. 
+     * Affects: All LamAlef BEGIN, END and AUTO options.
+     */
+    public static final int SPACES_RELATIVE_TO_TEXT_BEGIN_END = 0x4000000;
+
+    /** Bit mask for swapping BEGIN and END for Visual LTR text */
+    public static final int SPACES_RELATIVE_TO_TEXT_MASK = 0x4000000;
+    
+    /**
+     * If this option is used, shaping will use the new Unicode code point for TAIL (i.e. 0xFE73). 
+     * If this option is not specified (Default), old unofficial Unicode TAIL code point is used (i.e. 0x200B)
+     * De-shaping will not use this option as it will always search for both the new Unicode code point for the 
+     * TAIL (i.e. 0xFE73) or the old unofficial Unicode TAIL code point (i.e. 0x200B) and de-shape the
+     * Seen-Family letter accordingly.
+     *
+     * Shaping Mode: Only shaping.
+     * De-shaping Mode: N/A.
+     * Affects: All Seen options
+     */
+    public static final int SHAPE_TAIL_NEW_UNICODE = 0x8000000;
+
+    /** Bit mask for new Unicode Tail option */
+    public static final int SHAPE_TAIL_TYPE_MASK = 0x8000000;
+
+    /**
+     * 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: allow the result to have a different length than the source.
+     * Affects: LamAlef options
+     * This option is an alias to LENGTH_GROW_SHRINK
+     */
+    public static final int LAMALEF_RESIZE   = 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 next to modified characters.
+     * Affects: LamAlef options
+     * This option is an alias to LENGTH_FIXED_SPACES_NEAR
+     */
+    public static final int LAMALEF_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 end of the text.
+     * Affects: LamAlef options
+     * This option is an alias to LENGTH_FIXED_SPACES_AT_END
+     */
+    public static final int LAMALEF_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;
+
+    /**
+     * 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.
+     * Affects: LamAlef options
+     * This option is an alias to LENGTH_FIXED_SPACES_AT_BEGINNING
+     */
+    public static final int LAMALEF_BEGIN = 3; 
+
+    /**
+     * Memory option: the result must have the same length as the source.
+     * Shaping Mode: For each LAMALEF character found, expand LAMALEF using space at end.
+     *               If there is no space at end, use spaces at beginning of the buffer. If there
+     *               is no space at beginning of the buffer, use spaces at the near (i.e. the space
+     *               after the LAMALEF character).
+     *
+     * Deshaping Mode: Perform the same function as the flag equals LAMALEF_END. 
+     * Affects: LamAlef options
+     */
+    public static final int LAMALEF_AUTO  = 0x10000; 
+    
+    /** 
+     * Bit mask for memory options. 
+     * @stable ICU 2.0
+     */
+    public static final int LENGTH_MASK = 0x10003;
+
+    /** Bit mask for LamAlef memory options. */
+
+    public static final int LAMALEF_MASK  = 0x10003;
+
+    /** 
+     * 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 RTL order,
+     * the rightmost displayed character stored first.
+     * This option is an alias to U_SHAPE_TEXT_DIRECTION_LOGICAL
+     */
+    public static final int TEXT_DIRECTION_VISUAL_RTL = 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?
+
+    /**
+     * some constants
+     */
+    private static final char HAMZAFE_CHAR       = '\ufe80';
+    private static final char HAMZA06_CHAR       = '\u0621';
+    private static final char YEH_HAMZA_CHAR     = '\u0626';
+    private static final char YEH_HAMZAFE_CHAR   = '\uFE89';
+    private static final char LAMALEF_SPACE_SUB  = '\uffff';
+    private static final char TASHKEEL_SPACE_SUB = '\ufffe';
+    private static final char LAM_CHAR      = '\u0644';
+    private static final char SPACE_CHAR    = '\u0020';
+    private static final char SHADDA_CHAR   = '\uFE7C';
+    private static final char TATWEEL_CHAR  = '\u0640';
+    private static final char SHADDA_TATWEEL_CHAR = '\uFE7D';
+    private static final char NEW_TAIL_CHAR = '\uFE73';
+    private static final char OLD_TAIL_CHAR = '\u200B';
+    private static final int SHAPE_MODE      = 0;
+    private static final int DESHAPE_MODE    = 1;
+
+    /**
+     * @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 & LAMALEF_MASK) {
+        case LAMALEF_RESIZE: buf.append("LamAlef resize"); break;
+        case LAMALEF_NEAR: buf.append("LamAlef spaces at near"); break;
+        case LAMALEF_BEGIN: buf.append("LamAlef spaces at begin"); break;
+        case LAMALEF_END: buf.append("LamAlef spaces at end"); break;
+        case LAMALEF_AUTO: buf.append("lamAlef auto"); 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 & SEEN_MASK) {
+        case SEEN_TWOCELL_NEAR: buf.append(", Seen at near"); break;
+        }
+        switch (options & YEHHAMZA_MASK) {
+        case YEHHAMZA_TWOCELL_NEAR: buf.append(", Yeh Hamza at near"); break;
+        }
+        switch (options & TASHKEEL_MASK) {
+        case TASHKEEL_BEGIN: buf.append(", Tashkeel at begin"); break;
+        case TASHKEEL_END: buf.append(", Tashkeel at end"); break;
+        case TASHKEEL_REPLACE_BY_TATWEEL: buf.append(", Tashkeel replace with tatweel"); break;
+        case TASHKEEL_RESIZE: buf.append(", Tashkeel resize"); 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 int tailFamilyIsolatedFinal[] = {
+        /* FEB1 */ 1,
+        /* FEB2 */ 1,
+        /* FEB3 */ 0,
+        /* FEB4 */ 0,
+        /* FEB5 */ 1,
+        /* FEB6 */ 1,
+        /* FEB7 */ 0,
+        /* FEB8 */ 0,
+        /* FEB9 */ 1,
+        /* FEBA */ 1,
+        /* FEBB */ 0,
+        /* FEBC */ 0,
+        /* FEBD */ 1,
+        /* FEBE */ 1
+    };
+
+    private static final int tashkeelMedial[] = {
+        /* FE70 */ 0,
+        /* FE71 */ 1,
+        /* FE72 */ 0,
+        /* FE73 */ 0,
+        /* FE74 */ 0,
+        /* FE75 */ 0,
+        /* FE76 */ 0,
+        /* FE77 */ 1,
+        /* FE78 */ 0,
+        /* FE79 */ 1,
+        /* FE7A */ 0,
+        /* FE7B */ 1,
+        /* FE7C */ 0,
+        /* FE7D */ 1,
+        /* FE7E */ 0,
+        /* FE7F */ 1
+    };
+
+    private static final char yehHamzaToYeh[] =
+    {
+    /* isolated*/ 0xFEEF,
+    /* final   */ 0xFEF0
+    };
+
+    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) {
+            ///CLOVER:OFF
+            // This is dependent on the UBiDiProps object
+            throw new MissingResourceException(e.getMessage(), "(BidiProps)", "");
+            ///CLOVER:ON
+        }
+        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] != SPACE_CHAR) {
+                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] != SPACE_CHAR) {
+                return start + count - 1 - i;
+            }
+        }
+        return count;
+    }
+
+    /*
+     * Name    : isTashkeelChar
+     * Function: Returns true for Tashkeel characters else return false
+     */
+    private static boolean isTashkeelChar(char ch) {
+        return ( ch >='\u064B' && ch <= '\u0652' );
+    }
+
+    /*
+     *Name     : isSeenTailFamilyChar
+     *Function : returns 1 if the character is a seen family isolated character 
+     *           in the FE range otherwise returns 0
+     */
+
+    private static int isSeenTailFamilyChar(char ch) {
+        if (ch >= 0xfeb1 && ch < 0xfebf){
+             return tailFamilyIsolatedFinal [ch - 0xFEB1];
+        } else {
+             return 0;
+        }
+    }
+
+     /* Name     : isSeenFamilyChar
+      * Function : returns 1 if the character is a seen family character in the Unicode
+      *            06 range otherwise returns 0
+     */
+
+    private static int isSeenFamilyChar(char  ch){
+        if (ch >= 0x633 && ch <= 0x636){
+            return 1;
+        }else {
+            return 0;
+        }
+    }
+
+    /*
+     *Name     : isTailChar
+     *Function : returns true if the character matches one of the tail characters 
+     *           (0xfe73 or 0x200b) otherwise returns false
+     */
+
+    private static boolean isTailChar(char ch) {
+        if(ch == OLD_TAIL_CHAR || ch == NEW_TAIL_CHAR){
+                return true;
+        }else{
+                return false;
+        }
+    }
+    
+    /*
+     *Name     : isAlefMaksouraChar
+     *Function : returns true if the character is a Alef Maksoura Final or isolated 
+     *           otherwise returns false
+     */
+    private static boolean isAlefMaksouraChar(char ch) {
+        return ( (ch == 0xFEEF) || ( ch == 0xFEF0) || (ch == 0x0649));
+    } 
+
+    /*
+     * Name     : isYehHamzaChar
+     * Function : returns true if the character is a yehHamza isolated or yehhamza
+     *            final is found otherwise returns false
+     */
+    private static boolean isYehHamzaChar(char ch) {
+        if((ch==0xFE89)||(ch==0xFE8A)){
+            return true;
+        }else{
+            return false;
+        }
+    } 
+
+    /*
+     *Name     : isTashkeelCharFE
+     *Function : Returns true for Tashkeel characters in FE range else return false
+     */
+        
+    private static boolean isTashkeelCharFE(char ch) {
+        return ( ch!=0xFE75 &&(ch>=0xFE70 && ch<= 0xFE7F) );
+    }
+
+    /* 
+     * Name: isTashkeelOnTatweelChar
+     * Function: Checks if the Tashkeel Character is on Tatweel or not,if the 
+     *           Tashkeel on tatweel (FE range), it returns 1 else if the 
+     *           Tashkeel with shadda on tatweel (FC range)return 2 otherwise 
+     *           returns 0
+     */
+    private static int isTashkeelOnTatweelChar(char ch){
+        if (ch >= 0xfe70 && ch <= 0xfe7f && ch != NEW_TAIL_CHAR && ch != 0xFE75 && ch != SHADDA_TATWEEL_CHAR)
+        {
+            return tashkeelMedial [ch - 0xFE70];
+        } else if( (ch >= 0xfcf2 && ch <= 0xfcf4) || (ch == SHADDA_TATWEEL_CHAR)) {
+            return 2;
+        } else {
+            return 0;
+        }
+    }
+    
+    /*
+     * Name: isIsolatedTashkeelChar
+     * Function: Checks if the Tashkeel Character is in the isolated form 
+     *           (i.e. Unicode FE range) returns 1 else if the Tashkeel 
+     *           with shadda is in the isolated form (i.e. Unicode FC range)
+     *           returns 1 otherwise returns 0
+     */
+    private static int isIsolatedTashkeelChar(char ch){
+        if (ch >= 0xfe70 && ch <= 0xfe7f && ch != NEW_TAIL_CHAR && ch != 0xFE75){
+            return (1 - tashkeelMedial [ch - 0xFE70]);
+        } else if(ch >= 0xfc5e && ch <= 0xfc63){
+            return 1;
+        } else{
+            return 0;
+        }
+    }
+   
+    /*
+     * 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 true for LamAlef characters else return false
+     */
+    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] == LAM_CHAR && isAlefChar(source[i+1])) || isTashkeelCharFE(source[i])){
+                        --destSize;
+                    }
+                }
+            } else { // visual
+                for(int i = sourceStart + 1, e = sourceStart + sourceLength; i < e; ++i) {
+                    if ((source[i] == LAM_CHAR && isAlefChar(source[i-1])) || isTashkeelCharFE(source[i])) {
+                        --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    : countSpaceSub
+     * Function: Counts number of times the subChar appears in the array
+     */
+    public static int countSpaceSub(char [] dest,int length, char subChar){
+        int i = 0;
+        int count = 0;
+        while (i < length) {
+          if (dest[i] == subChar) {
+              count++;
+              }
+          i++;
+        } 
+        return count;  
+    }
+    
+    /*
+     * Name    : shiftArray
+     * Function: Shifts characters to replace space sub characters
+     */
+    public static void shiftArray(char [] dest,int start, int e, char subChar){
+        int w = e;
+        int r = e;
+        while (--r >= start) {
+          char ch = dest[r];
+          if (ch != subChar) {
+            --w;
+            if (w != r) {
+              dest[w] = ch;
+            }
+          }
+        }
+   }
+
+    /*
+     * Name    : flipArray
+     * Function: inverts array, so that start becomes end and vice versa
+     */
+      public static int flipArray(char [] dest, int start, int e, int w){
+        int r;
+        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;
+         }
+        return w;
+      }
+    
+    /*
+     * Name     : handleTashkeelWithTatweel
+     * Function : Replaces Tashkeel as following: 
+     *            Case 1 :if the Tashkeel on tatweel, replace it with Tatweel.   
+     *            Case 2 :if the Tashkeel aggregated with Shadda on Tatweel, replace 
+     *                   it with Shadda on Tatweel.
+     *            Case 3: if the Tashkeel is isolated replace it with Space.
+     *
+     */
+    private static int handleTashkeelWithTatweel(char[] dest, int sourceLength) {
+                     int i;
+                     for(i = 0; i < sourceLength; i++){
+                         if((isTashkeelOnTatweelChar(dest[i]) == 1)){
+                             dest[i] = TATWEEL_CHAR;
+                        }else if((isTashkeelOnTatweelChar(dest[i]) == 2)){
+                             dest[i] = SHADDA_TATWEEL_CHAR;
+                        }else if((isIsolatedTashkeelChar(dest[i])==1) && dest[i] != SHADDA_CHAR){
+                             dest[i] = SPACE_CHAR;
+                        }
+                     }
+                     return sourceLength;
+    }
+
+    /*
+     *Name     : handleGeneratedSpaces
+     *Function : The shapeUnicode function converts Lam + Alef into LamAlef + space,
+     *           and Tashkeel to space. 
+     *           handleGeneratedSpaces function puts these generated spaces 
+     *           according to the options the user specifies. LamAlef and Tashkeel
+     *           spaces can be replaced at begin, at end, at near or decrease the 
+     *           buffer size.
+     *
+     *           There is also Auto option for LamAlef and tashkeel, which will put
+     *           the spaces at end of the buffer (or end of text if the user used 
+     *           the option SPACES_RELATIVE_TO_TEXT_BEGIN_END).
+     *
+     *           If the text type was visual_LTR and the option 
+     *           SPACES_RELATIVE_TO_TEXT_BEGIN_END was selected the END 
+     *           option will place the space at the beginning of the buffer and
+     *           BEGIN will place the space at the end of the buffer. 
+     */
+  private int handleGeneratedSpaces(char[] dest, 
+            int start,
+            int length) {
+      
+      int lenOptionsLamAlef = options & LAMALEF_MASK;
+      int lenOptionsTashkeel = options & TASHKEEL_MASK;
+      boolean lamAlefOn = false;
+      boolean tashkeelOn = false;
+      
+      if (!isLogical & !spacesRelativeToTextBeginEnd) {
+          switch (lenOptionsLamAlef) {
+          case LAMALEF_BEGIN: lenOptionsLamAlef = LAMALEF_END; break;
+          case LAMALEF_END: lenOptionsLamAlef = LAMALEF_BEGIN; break;
+          default: break;
+         }   
+          switch (lenOptionsTashkeel){
+          case TASHKEEL_BEGIN: lenOptionsTashkeel = TASHKEEL_END; break;
+          case TASHKEEL_END: lenOptionsTashkeel = TASHKEEL_BEGIN; break;
+          default: break;
+          }
+        }
+      
+     
+      if (lenOptionsLamAlef == LAMALEF_NEAR) {
+          for (int i = start, e = i + length; i < e; ++i) {
+              if (dest[i] == LAMALEF_SPACE_SUB) {
+                  dest[i] = SPACE_CHAR;
+              }
+          }
+          
+      } else {
+          
+          final int e = start + length;
+          int wL = countSpaceSub(dest, length, LAMALEF_SPACE_SUB);
+          int wT = countSpaceSub(dest, length, TASHKEEL_SPACE_SUB);
+
+          if (lenOptionsLamAlef == LAMALEF_END){
+            lamAlefOn = true;
+          }
+          if (lenOptionsTashkeel == TASHKEEL_END){
+            tashkeelOn = true;
+          }
+
+
+          if (lamAlefOn && (lenOptionsLamAlef == LAMALEF_END)) { 
+            shiftArray(dest, start, e, LAMALEF_SPACE_SUB);
+            while (wL > start) {
+                dest[--wL] = SPACE_CHAR;
+            } 
+          }
+
+          if (tashkeelOn && (lenOptionsTashkeel == TASHKEEL_END)){
+            shiftArray(dest, start, e, TASHKEEL_SPACE_SUB);
+            while (wT > start) {
+                 dest[--wT] = SPACE_CHAR;
+            }
+          }
+            
+          lamAlefOn = false; 
+          tashkeelOn = false;
+        
+          if (lenOptionsLamAlef == LAMALEF_RESIZE){
+            lamAlefOn = true;
+          }
+          if (lenOptionsTashkeel == TASHKEEL_RESIZE){
+            tashkeelOn = true;
+          }
+        
+          if (lamAlefOn && (lenOptionsLamAlef == LAMALEF_RESIZE)){
+              shiftArray(dest, start, e, LAMALEF_SPACE_SUB);
+              wL = flipArray(dest,start,e, wL);
+              length = wL - start;
+          }
+          if (tashkeelOn && (lenOptionsTashkeel == TASHKEEL_RESIZE)) { 
+              shiftArray(dest, start, e, TASHKEEL_SPACE_SUB);
+              wT = flipArray(dest,start,e, wT);
+              length = wT - start;
+          } 
+
+          lamAlefOn = false; 
+          tashkeelOn = false;          
+        
+          if ((lenOptionsLamAlef == LAMALEF_BEGIN) || 
+              (lenOptionsLamAlef == LAMALEF_AUTO)){
+                lamAlefOn = true;
+          }
+          if (lenOptionsTashkeel == TASHKEEL_BEGIN){
+                tashkeelOn = true;
+          }
+
+          if (lamAlefOn && ((lenOptionsLamAlef == LAMALEF_BEGIN)||
+                            (lenOptionsLamAlef == LAMALEF_AUTO))) { // spaces at beginning
+              shiftArray(dest, start, e, LAMALEF_SPACE_SUB);
+               wL = flipArray(dest,start,e, wL);
+                  while (wL < e) {
+                      dest[wL++] = SPACE_CHAR;
+                  }
+              }
+              if(tashkeelOn && (lenOptionsTashkeel == TASHKEEL_BEGIN)){
+               shiftArray(dest, start, e, TASHKEEL_SPACE_SUB);
+               wT = flipArray(dest,start,e, wT);
+                  while (wT < e) {
+                      dest[wT++] = SPACE_CHAR;
+                  }
+              }
+           }
+      
+      return length;
+  }
+  
+  
+  /*
+   *Name     :expandCompositCharAtBegin
+   *Function :Expands the LamAlef character to Lam and Alef consuming the required
+   *         space from beginning of the buffer. If the text type was visual_LTR 
+   *         and the option SPACES_RELATIVE_TO_TEXT_BEGIN_END was selected
+   *         the spaces will be located at end of buffer.
+   *         If there are no spaces to expand the LamAlef, an exception is thrown.
+*/
+ private boolean expandCompositCharAtBegin(char[] dest,int start, int length,
+                            int lacount) {
+     boolean spaceNotFound = false;
+     
+     if (lacount > countSpacesRight(dest, start, length)) {
+         spaceNotFound = true;
+         return spaceNotFound;
+     }
+     for (int r = start + length - lacount, w = start + length; --r >= start;) {
+         char ch = dest[r];
+         if (isNormalizedLamAlefChar(ch)) {
+             dest[--w] = LAM_CHAR;
+             dest[--w] = convertNormalizedLamAlef[ch - '\u065C'];
+         } else {
+             dest[--w] = ch;
+         }
+     }
+     return spaceNotFound;
+ 
+  }
+
+  /*
+   *Name     : expandCompositCharAtEnd
+   *Function : Expands the LamAlef character to Lam and Alef consuming the 
+   *           required space from end of the buffer. If the text type was
+   *           Visual LTR and the option SPACES_RELATIVE_TO_TEXT_BEGIN_END
+   *           was used, the spaces will be consumed from begin of buffer. If 
+   *           there are no spaces to expand the LamAlef, an exception is thrown. 
+   */
+
+  private boolean  expandCompositCharAtEnd(char[] dest,int start, int length,
+                          int lacount){
+      boolean spaceNotFound = false;
+      
+      if (lacount > countSpacesLeft(dest, start, length)) {
+          spaceNotFound = true;
+          return spaceNotFound;
+      }
+      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++] = LAM_CHAR;
+          } else {
+              dest[w++] = ch;
+          }
+      }
+      return spaceNotFound;
+  }
+
+  /*
+   *Name     : expandCompositCharAtNear
+   *Function : Expands the LamAlef character into Lam + Alef, YehHamza character
+   *           into Yeh + Hamza, SeenFamily character into SeenFamily character 
+   *           + Tail, while consuming the space next to the character. 
+   */
+
+  private boolean expandCompositCharAtNear(char[] dest,int start, int length,
+                                       int yehHamzaOption, int seenTailOption, int lamAlefOption){
+      
+      boolean spaceNotFound = false;
+      
+      
+      
+      if (isNormalizedLamAlefChar(dest[start])) {
+          spaceNotFound = true;
+          return spaceNotFound;
+      }
+      for (int i = start + length; --i >=start;) { 
+          char ch = dest[i];
+          if (lamAlefOption == 1 && isNormalizedLamAlefChar(ch)) {
+              if (i>start &&dest[i-1] == SPACE_CHAR) {
+                  dest[i] = LAM_CHAR;
+                  dest[--i] = convertNormalizedLamAlef[ch - '\u065C'];
+              } else {
+                  spaceNotFound = true;
+                  return spaceNotFound;
+              }
+          }else if(seenTailOption == 1 && isSeenTailFamilyChar(ch) == 1){
+              if(i>start &&dest[i-1] == SPACE_CHAR){
+                  dest[i-1] = tailChar;
+              } else{
+                  spaceNotFound = true;
+                  return spaceNotFound;
+              }
+          }else if(yehHamzaOption == 1 && isYehHamzaChar(ch)){
+              
+               if(i>start &&dest[i-1] == SPACE_CHAR){
+                  dest[i] = yehHamzaToYeh[ch - YEH_HAMZAFE_CHAR];
+                  dest[i-1] = HAMZAFE_CHAR;
+              }else{
+                  spaceNotFound = true;
+                  return spaceNotFound;
+                }
+              
+              
+          }
+      }
+      return false;
+
+  }
+    
+    /*
+     * Name    : expandCompositChar
+     * 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 expandCompositChar(char[] dest,
+                              int start,
+                              int length,
+                              int lacount,
+                              int shapingMode) throws ArabicShapingException {
+
+        int lenOptionsLamAlef = options & LAMALEF_MASK;
+        int lenOptionsSeen = options & SEEN_MASK;
+        int lenOptionsYehHamza = options & YEHHAMZA_MASK; 
+        boolean spaceNotFound = false;
+        
+        if (!isLogical && !spacesRelativeToTextBeginEnd) {
+            switch (lenOptionsLamAlef) {
+            case LAMALEF_BEGIN: lenOptionsLamAlef = LAMALEF_END; break;
+            case LAMALEF_END: lenOptionsLamAlef = LAMALEF_BEGIN; break;
+            default: break;
+            }
+        }
+        
+        if(shapingMode == 1){
+            if(lenOptionsLamAlef == LAMALEF_AUTO){
+                if(isLogical){
+                    spaceNotFound = expandCompositCharAtEnd(dest, start, length, lacount);
+                    if(spaceNotFound){
+                        spaceNotFound = expandCompositCharAtBegin(dest, start, length, lacount);
+                    }
+                    if(spaceNotFound){
+                        spaceNotFound = expandCompositCharAtNear(dest, start, length,0,0,1);
+                    }
+                    if(spaceNotFound){
+                        throw new ArabicShapingException("No spacefor lamalef");
+                    }
+                }else{
+                    spaceNotFound = expandCompositCharAtBegin(dest, start, length, lacount);
+                    if(spaceNotFound){
+                        spaceNotFound = expandCompositCharAtEnd(dest, start, length, lacount);
+                    }
+                    if(spaceNotFound){
+                        spaceNotFound = expandCompositCharAtNear(dest, start, length,0,0,1);
+                    }
+                    if(spaceNotFound){
+                        throw new ArabicShapingException("No spacefor lamalef");
+                    }
+                }
+            }else if(lenOptionsLamAlef == LAMALEF_END){
+                spaceNotFound = expandCompositCharAtEnd(dest, start, length, lacount);
+                if(spaceNotFound){
+                    throw new ArabicShapingException("No spacefor lamalef");
+                }
+            }else if(lenOptionsLamAlef == LAMALEF_BEGIN){
+                spaceNotFound = expandCompositCharAtBegin(dest, start, length, lacount);
+                if(spaceNotFound){
+                    throw new ArabicShapingException("No spacefor lamalef");
+                }                
+            }else if(lenOptionsLamAlef == LAMALEF_NEAR){
+                spaceNotFound = expandCompositCharAtNear(dest, start, length,0,0,1);
+                if(spaceNotFound){
+                    throw new ArabicShapingException("No spacefor lamalef");                
+            }
+            }else if(lenOptionsLamAlef == LAMALEF_RESIZE){
+                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;
+            }
+            }else{
+                if(lenOptionsSeen == SEEN_TWOCELL_NEAR){
+                spaceNotFound = expandCompositCharAtNear(dest, start, length,0,1,0);
+                if(spaceNotFound){
+                    throw new ArabicShapingException("No space for Seen tail expansion"); 
+                }
+            }
+            if(lenOptionsYehHamza == YEHHAMZA_TWOCELL_NEAR){
+                spaceNotFound = expandCompositCharAtNear(dest, start, length,1,0,0);
+                if(spaceNotFound){
+                    throw new ArabicShapingException("No space for YehHamza expansion"); 
+                }
+            }   
+            }
+        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    : deshapeNormalize
+     * Function: Convert the input buffer from FExx Range into 06xx Range
+     *           even the lamalef is converted to the special region in the 06xx range.  
+     *           According to the options the user enters, all seen family characters 
+     *           followed by a tail character are merged to seen tail family character and 
+     *           any yeh followed by a hamza character are merged to yehhamza character.
+     *           Method returns the number of lamalef chars found.
+     */
+    private int deshapeNormalize(char[] dest, int start, int length) {
+        int lacount = 0;
+        int yehHamzaComposeEnabled = 0;
+        int seenComposeEnabled = 0;
+
+        yehHamzaComposeEnabled = ((options&YEHHAMZA_MASK) == YEHHAMZA_TWOCELL_NEAR) ? 1 : 0;
+        seenComposeEnabled = ((options&SEEN_MASK) == SEEN_TWOCELL_NEAR)? 1 : 0;
+    
+        for (int i = start, e = i + length; i < e; ++i) {
+            char ch = dest[i];
+        
+        if( (yehHamzaComposeEnabled == 1) && ((ch == HAMZA06_CHAR) || (ch == HAMZAFE_CHAR)) 
+               && (i < (length - 1)) && isAlefMaksouraChar(dest[i+1] )) {
+                dest[i] = SPACE_CHAR;
+                dest[i+1] = YEH_HAMZA_CHAR;
+       } else if ( (seenComposeEnabled == 1) && (isTailChar(ch)) && (i< (length - 1)) 
+                       && (isSeenTailFamilyChar(dest[i+1])==1) ) {
+               dest[i] = SPACE_CHAR;
+       }
+       else 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)throws ArabicShapingException {
+        
+        int lamalef_count = 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, seenfam_found = false;
+        boolean yehhamza_found = false, tashkeel_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
+                }
+                if ((i > 0) && (dest[i-1] == SPACE_CHAR))
+                { 
+                    if ( isSeenFamilyChar(dest[i]) == 1){
+                        seenfam_found = true;
+                    } else if (dest[i] == YEH_HAMZA_CHAR) {
+                        yehhamza_found = true;
+                    }
+                }
+                else if(i==0){
+                    if ( isSeenFamilyChar(dest[i]) == 1){
+                        seenfam_found = true;
+                    } else if (dest[i] == YEH_HAMZA_CHAR) {
+                        yehhamza_found = true;
+                    }
+                }
+
+
+                // 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] = TASHKEEL_SPACE_SUB;
+                        tashkeel_found = true;
+                    }
+                    else{
+                        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 handleGeneratedSpaces to remove the spaces that were added
+
+        destSize = length;
+        if (lamalef_found || tashkeel_found) {
+            destSize = handleGeneratedSpaces(dest, start, length);
+        }
+        if (seenfam_found || yehhamza_found){
+            destSize = expandCompositChar(dest, start, destSize, lamalef_count, SHAPE_MODE);
+        }
+        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 = deshapeNormalize(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 = expandCompositChar(dest, start, length, lamalef_count,DESHAPE_MODE); 
+        } 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 & LAMALEF_MASK) == LAMALEF_RESIZE)) {
+    
+                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:
+            if( ((options&TASHKEEL_MASK)> 0) && 
+                ((options&TASHKEEL_MASK) !=TASHKEEL_REPLACE_BY_TATWEEL)) {
+                   /* Call the shaping function with tashkeel flag == 2 for removal of tashkeel */
+                outputSize = shapeUnicode(temp, 0, sourceLength, destSize, 2);
+                }else {
+                   //default Call the shaping function with tashkeel flag == 1 */
+                    outputSize = shapeUnicode(temp, 0, sourceLength, destSize, 0);
+
+                   /*After shaping text check if user wants to remove tashkeel and replace it with tatweel*/
+                   if( (options&TASHKEEL_MASK) == TASHKEEL_REPLACE_BY_TATWEEL){
+                       outputSize = handleTashkeelWithTatweel(temp,sourceLength);
+                   }
+               }
+            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/main/classes/core/src/com/ibm/icu/text/ArabicShapingException.java b/main/classes/core/src/com/ibm/icu/text/ArabicShapingException.java
new file mode 100644
index 0000000..76720e1
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/BaseFormat.java b/main/classes/core/src/com/ibm/icu/text/BaseFormat.java
new file mode 100644
index 0000000..eb2d026
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/BaseFormat.java
@@ -0,0 +1,15 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, Google, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+ * @author markdavis
+ *
+ */
+public interface BaseFormat<T, U extends Appendable, S extends CharSequence> extends Formatter<T, U>, Parser<T, S> {
+
+}
diff --git a/main/classes/core/src/com/ibm/icu/text/Bidi.java b/main/classes/core/src/com/ibm/icu/text/Bidi.java
new file mode 100644
index 0000000..2a58219
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/Bidi.java
@@ -0,0 +1,4851 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2009, 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;
+
+import java.awt.font.NumericShaper;
+import java.awt.font.TextAttribute;
+import java.io.IOException;
+import java.lang.reflect.Array;
+import java.text.AttributedCharacterIterator;
+import java.util.Arrays;
+import java.util.MissingResourceException;
+
+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)
+ * @stable ICU 3.8
+ *
+ *
+ * <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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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>).
+     * @stable ICU 3.8
+     */
+    public static final byte MAX_EXPLICIT_LEVEL = 61;
+
+    /**
+     * Bit flag for level input.
+     * Overrides directional properties.
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    public static final int MAP_NOWHERE = -1;
+
+    /**
+     * All left-to-right text.
+     * @stable ICU 3.8
+     */
+    public static final byte LTR = 0;
+
+    /**
+     * All right-to-left text.
+     * @stable ICU 3.8
+     */
+    public static final byte RTL = 1;
+
+    /**
+     * Mixed-directional text.
+     * @stable ICU 3.8
+     */
+    public static final byte MIXED = 2;
+
+    /**
+     * option bit for writeReordered():
+     * keep combining characters after their base characters in RTL runs
+     *
+     * @see #writeReordered
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    public static final short OUTPUT_REVERSE = 16;
+
+    /** Reordering mode: Regular Logical to Visual Bidi algorithm according to Unicode.
+     * @see #setReorderingMode
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    public static final short REORDER_NUMBERS_SPECIAL = 1;
+
+    /** Reordering mode: Logical to Visual algorithm grouping numbers with
+     * adjacent R characters (reversible algorithm).
+     * @see #setReorderingMode
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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(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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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.
+     *
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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) {
+            ///CLOVER:OFF
+            throw new MissingResourceException(e.getMessage(), "(BidiProps)", "");
+            ///CLOVER:ON
+        }
+
+        /* 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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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 = 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 = 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 = 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, 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, 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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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 */
+    }
+
+    /**
+     * 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
+     * @stable ICU 3.8
+     */
+    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;
+        }
+
+        NumericShaper shaper = (NumericShaper) paragraph.getAttribute(TextAttribute.NUMERIC_SHAPING);
+        if (shaper != null) {
+            shaper.shape(txt, 0, len);
+        }
+        setPara(txt, paraLvl, lvls);
+    }
+
+    /**
+     * 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
+     * @stable ICU 3.8
+     */
+    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.
+     *
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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>
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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>
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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>
+     * @stable ICU 3.8
+     */
+    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()
+     *
+     * @stable ICU 3.8
+     */
+    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>
+     * @stable ICU 3.8
+     */
+    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()
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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.
+     *
+     * @stable ICU 3.8
+     */
+    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.
+     *
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 3.8
+     */
+    public static final int DIRECTION_LEFT_TO_RIGHT = LTR;
+
+    /**
+     * Constant indicating base direction is right-to-left.
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    public Bidi(String paragraph, int flags)
+    {
+        this(paragraph.toCharArray(), 0, null, 0, paragraph.length(), flags);
+    }
+
+    /**
+     * 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
+     * @stable ICU 3.8
+     */
+    public Bidi(AttributedCharacterIterator paragraph)
+    {
+        this();
+        setPara(paragraph);
+    }
+
+    /**
+     * 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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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>
+     * @stable ICU 3.8
+     */
+    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>
+     * @stable ICU 3.8
+     */
+    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>
+     * @stable ICU 3.8
+     */
+    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>
+     *
+     * @stable ICU 3.8
+     */
+    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>
+     *
+     * @stable ICU 3.8
+     */
+    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>
+     *
+     * @stable ICU 3.8
+     */
+    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>
+     * @stable ICU 3.8
+     */
+    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>
+     * @stable ICU 3.8
+     */
+    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>
+     * @stable ICU 3.8
+     */
+    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
+     *
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 3.8
+     */
+    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/main/classes/core/src/com/ibm/icu/text/BidiClassifier.java b/main/classes/core/src/com/ibm/icu/text/BidiClassifier.java
new file mode 100644
index 0000000..37c3731
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/BidiClassifier.java
@@ -0,0 +1,96 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2009, 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
+ * @stable ICU 3.8
+ */
+
+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.
+     * @stable ICU 3.8
+     */
+    protected Object context;
+
+    /**
+     * @param context Context for this classifier instance.
+     *                May be null.
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 3.8
+     */
+    public void setContext(Object context) {
+        this.context = context;
+    }
+
+    /**
+     * Returns the current classifier context.
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    public int classify(int c) {
+        return Bidi.CLASS_DEFAULT;
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/text/BidiLine.java b/main/classes/core/src/com/ibm/icu/text/BidiLine.java
new file mode 100644
index 0000000..6fd88a9
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/BidiLine.java
@@ -0,0 +1,1236 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2009, 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;
+        }
+        ///CLOVER:OFF
+        /* we should never get here */
+        throw new IllegalStateException("Internal ICU error in getRunFromLogicalIndex");
+        ///CLOVER:ON
+    }
+
+    /*
+     * 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/main/classes/core/src/com/ibm/icu/text/BidiRun.java b/main/classes/core/src/com/ibm/icu/text/BidiRun.java
new file mode 100644
index 0000000..3bb04b7
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/BidiRun.java
@@ -0,0 +1,153 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2009, 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
+ * @stable 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.
+     */
+    BidiRun()
+    {
+        this(0, 0, (byte)0);
+    }
+
+    /*
+     * Constructor
+     */
+    BidiRun(int start, int limit, byte embeddingLevel)
+    {
+        this.start = start;
+        this.limit = limit;
+        this.level = embeddingLevel;
+    }
+
+    /*
+     * Copy the content of a BidiRun instance
+     */
+    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
+     * @stable ICU 3.8
+     */
+    public int getStart()
+    {
+        return start;
+    }
+
+    /**
+     * Get position of one character after the end of the run in the source text
+     * @stable ICU 3.8
+     */
+    public int getLimit()
+    {
+        return limit;
+    }
+
+    /**
+     * Get length of run
+     * @stable ICU 3.8
+     */
+    public int getLength()
+    {
+        return limit - start;
+    }
+
+    /**
+     * Get level of run
+     * @stable 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.
+     * @stable 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.
+     * @stable ICU 3.8
+     */
+    public boolean isEvenRun()
+    {
+        return (level & 1) == 0;
+    }
+
+    /**
+     * Get direction of run
+     * @stable ICU 3.8
+     */
+    public byte getDirection()
+    {
+        return (byte)(level & 1);
+    }
+
+    /**
+     * String to display run
+     * @stable ICU 3.8
+     */
+    public String toString()
+    {
+        return new String("BidiRun " + start + " - " + limit + " @ " + level);
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/text/BidiWriter.java b/main/classes/core/src/com/ibm/icu/text/BidiWriter.java
new file mode 100644
index 0000000..8fc54ff
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/BreakCTDictionary.java b/main/classes/core/src/com/ibm/icu/text/BreakCTDictionary.java
new file mode 100644
index 0000000..80fd3f1
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/BreakCTDictionary.java
@@ -0,0 +1,257 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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 = 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 = 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 = 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/main/classes/core/src/com/ibm/icu/text/BreakDictionary.java b/main/classes/core/src/com/ibm/icu/text/BreakDictionary.java
new file mode 100644
index 0000000..a01781a
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/BreakDictionary.java
@@ -0,0 +1,328 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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.
+     */
+    ///CLOVER:OFF
+    //The main method looks like it was useful once but now seems worthless. It is not used by any method or class.
+    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();
+        }
+    }
+    ///CLOVER:ON
+
+    /** 
+     * @internal 
+     * @deprecated This API is ICU internal only.
+     */
+    ///CLOVER:OFF
+    /* 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);
+                }
+            }
+        }
+    }
+    ///CLOVER:ON
+
+    /**
+     * 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/main/classes/core/src/com/ibm/icu/text/BreakIterator.java b/main/classes/core/src/com/ibm/icu/text/BreakIterator.java
new file mode 100644
index 0000000..ee14eaa
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/BreakIterator.java
@@ -0,0 +1,879 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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<BreakIteratorCache>(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/main/classes/core/src/com/ibm/icu/text/BreakIteratorFactory.java b/main/classes/core/src/com/ibm/icu/text/BreakIteratorFactory.java
new file mode 100644
index 0000000..471f7bf
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/BreakIteratorFactory.java
@@ -0,0 +1,177 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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();
+        } else {
+            return service.getAvailableLocales();
+        }
+    }
+
+    public ULocale[] getAvailableULocales() {
+        if (service == null) {
+            return ICUResourceBundle.getAvailableULocales();
+        } 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/main/classes/core/src/com/ibm/icu/text/CanonicalIterator.java b/main/classes/core/src/com/ibm/icu/text/CanonicalIterator.java
new file mode 100644
index 0000000..1ffefcd
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/CanonicalIterator.java
@@ -0,0 +1,535 @@
+/*
+ *******************************************************************************
+ * 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.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.USerializedSet;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+
+/**
+ * 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<String> segmentList = new ArrayList<String>();
+        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(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<String> 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<String> subpermute = new HashSet<String>();
+        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);
+            for (String s : subpermute) {
+                String piece = chStr + s;
+                //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<String> result = new HashSet<String>();
+        Set<String> basic = getEquivalents2(segment);
+        Set<String> permutations = new HashSet<String>();
+
+        // now get all the permutations
+        // add only the ones that are canonically equivalent
+        // TODO: optimize by not permuting any class zero.
+        Iterator<String> it = basic.iterator();
+        while (it.hasNext()) {
+            String item = it.next();
+            permutations.clear();
+            permute(item, SKIP_ZEROS, permutations);
+            Iterator<String> it2 = permutations.iterator();
+            while (it2.hasNext()) {
+                String possible = 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<String> getEquivalents2(String segment) {
+
+        Set<String> result = new HashSet<String>();
+
+        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<String> 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;
+                    for (String item : remainder) {
+                        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<String> 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<String> SET_WITH_NULL_STRING = new HashSet<String>(); // 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/main/classes/core/src/com/ibm/icu/text/CharsetDetector.java b/main/classes/core/src/com/ibm/icu/text/CharsetDetector.java
new file mode 100644
index 0000000..741b5f9
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/CharsetDetector.java
@@ -0,0 +1,525 @@
+/**
+*******************************************************************************
+* Copyright (C) 2005-2009, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+
+
+/**
+ * <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<CharsetMatch>         matches = new ArrayList<CharsetMatch>();
+        
+        //  Iterate over all possible charsets, remember all that
+        //    give a match quality > 0.
+        for (i=0; i<fCSRecognizers.size(); i++) {
+            csr = 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 = 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<CharsetRecognizer> fCSRecognizers = createRecognizers();
+    private static String [] fCharsetNames;
+    
+    /*
+     * Create the singleton instances of the CharsetRecognizer classes
+     */
+    private static ArrayList<CharsetRecognizer> createRecognizers() {
+        ArrayList<CharsetRecognizer> recognizers = new ArrayList<CharsetRecognizer>();
+        
+        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());
+        
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_IBM424_he_rtl());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_IBM424_he_ltr());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_IBM420_ar_rtl());
+        recognizers.add(new CharsetRecog_sbcs.CharsetRecog_IBM420_ar_ltr());
+        
+        // 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 = 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/main/classes/core/src/com/ibm/icu/text/CharsetMatch.java b/main/classes/core/src/com/ibm/icu/text/CharsetMatch.java
new file mode 100644
index 0000000..6fef93c
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/CharsetMatch.java
@@ -0,0 +1,273 @@
+/**
+*******************************************************************************
+* Copyright (C) 2005-2009, 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<CharsetMatch> {
+
+    
+    /**
+     * 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;
+//    }
+
+    public int compareTo (CharsetMatch other) {
+        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/main/classes/core/src/com/ibm/icu/text/CharsetRecog_2022.java b/main/classes/core/src/com/ibm/icu/text/CharsetRecog_2022.java
new file mode 100644
index 0000000..822e961
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/CharsetRecog_UTF8.java b/main/classes/core/src/com/ibm/icu/text/CharsetRecog_UTF8.java
new file mode 100644
index 0000000..e2e4485
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/CharsetRecog_Unicode.java b/main/classes/core/src/com/ibm/icu/text/CharsetRecog_Unicode.java
new file mode 100644
index 0000000..979c68d
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/CharsetRecog_mbcs.java b/main/classes/core/src/com/ibm/icu/text/CharsetRecog_mbcs.java
new file mode 100644
index 0000000..bf6a91e
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/CharsetRecog_sbcs.java b/main/classes/core/src/com/ibm/icu/text/CharsetRecog_sbcs.java
new file mode 100644
index 0000000..647b2ac
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/CharsetRecog_sbcs.java
@@ -0,0 +1,1279 @@
+/*
+ ****************************************************************************
+ * Copyright (C) 2005-2009, International Business Machines Corporation and *
+ * others. All Rights Reserved.                                             *
+ ************************************************************************** *
+ *
+ */
+
+package com.ibm.icu.text;
+
+import java.nio.ByteBuffer;
+
+/**
+ * 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;
+        
+        private byte spaceChar;
+        
+        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)
+        {
+            return parse (det, (byte)0x20);
+        }
+        public int parse(CharsetDetector det, byte spaceCh)
+        {
+            int b;
+            boolean ignoreSpace = false;
+            this.spaceChar = spaceCh;
+            
+            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 == spaceChar && ignoreSpace)) {
+                        addByte(mb);                    
+                    }
+                    
+                    ignoreSpace = (mb == spaceChar);
+                }
+            }
+            
+            // TODO: Is this OK? The buffer could have ended in the middle of a word...
+            addByte(spaceChar);
+
+            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)
+    {
+        return match (det, ngrams, byteMap, (byte)0x20);
+    }
+    
+    int match(CharsetDetector det, int[] ngrams,  byte[] byteMap, byte spaceChar)
+    {
+        NGramParser parser = new NGramParser(ngrams, byteMap);
+        
+        haveC1Bytes = det.fC1Bytes;
+        
+        return parser.parse(det, spaceChar);
+    }
+    
+    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);
+        }
+    }
+    
+    abstract static class CharsetRecog_IBM424_he extends CharsetRecog_sbcs
+    {
+        protected static byte[] byteMap = {
+/*                 -0           -1           -2           -3           -4           -5           -6           -7           -8           -9           -A           -B           -C           -D           -E           -F   */
+/* 0- */    (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* 1- */    (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* 2- */    (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* 3- */    (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* 4- */    (byte) 0x40, (byte) 0x41, (byte) 0x42, (byte) 0x43, (byte) 0x44, (byte) 0x45, (byte) 0x46, (byte) 0x47, (byte) 0x48, (byte) 0x49, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* 5- */    (byte) 0x40, (byte) 0x51, (byte) 0x52, (byte) 0x53, (byte) 0x54, (byte) 0x55, (byte) 0x56, (byte) 0x57, (byte) 0x58, (byte) 0x59, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* 6- */    (byte) 0x40, (byte) 0x40, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* 7- */    (byte) 0x40, (byte) 0x71, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x00, (byte) 0x40, (byte) 0x40, 
+/* 8- */    (byte) 0x40, (byte) 0x81, (byte) 0x82, (byte) 0x83, (byte) 0x84, (byte) 0x85, (byte) 0x86, (byte) 0x87, (byte) 0x88, (byte) 0x89, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* 9- */    (byte) 0x40, (byte) 0x91, (byte) 0x92, (byte) 0x93, (byte) 0x94, (byte) 0x95, (byte) 0x96, (byte) 0x97, (byte) 0x98, (byte) 0x99, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* A- */    (byte) 0xA0, (byte) 0x40, (byte) 0xA2, (byte) 0xA3, (byte) 0xA4, (byte) 0xA5, (byte) 0xA6, (byte) 0xA7, (byte) 0xA8, (byte) 0xA9, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* B- */    (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* C- */    (byte) 0x40, (byte) 0x81, (byte) 0x82, (byte) 0x83, (byte) 0x84, (byte) 0x85, (byte) 0x86, (byte) 0x87, (byte) 0x88, (byte) 0x89, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* D- */    (byte) 0x40, (byte) 0x91, (byte) 0x92, (byte) 0x93, (byte) 0x94, (byte) 0x95, (byte) 0x96, (byte) 0x97, (byte) 0x98, (byte) 0x99, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* E- */    (byte) 0x40, (byte) 0x40, (byte) 0xA2, (byte) 0xA3, (byte) 0xA4, (byte) 0xA5, (byte) 0xA6, (byte) 0xA7, (byte) 0xA8, (byte) 0xA9, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* F- */    (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+        };
+
+        public String getLanguage()
+        {
+            return "he";
+        }
+    }
+    static class CharsetRecog_IBM424_he_rtl extends CharsetRecog_IBM424_he 
+    {
+        public String getName()
+        {
+            return "IBM424_rtl";
+        }
+        private static int[] ngrams = {
+            0x404146, 0x404148, 0x404151, 0x404171, 0x404251, 0x404256, 0x404541, 0x404546, 0x404551, 0x404556, 0x404562, 0x404569, 0x404571, 0x405441, 0x405445, 0x405641, 
+            0x406254, 0x406954, 0x417140, 0x454041, 0x454042, 0x454045, 0x454054, 0x454056, 0x454069, 0x454641, 0x464140, 0x465540, 0x465740, 0x466840, 0x467140, 0x514045, 
+            0x514540, 0x514671, 0x515155, 0x515540, 0x515740, 0x516840, 0x517140, 0x544041, 0x544045, 0x544140, 0x544540, 0x554041, 0x554042, 0x554045, 0x554054, 0x554056, 
+            0x554069, 0x564540, 0x574045, 0x584540, 0x585140, 0x585155, 0x625440, 0x684045, 0x685155, 0x695440, 0x714041, 0x714042, 0x714045, 0x714054, 0x714056, 0x714069, 
+        };
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap, (byte)0x40);
+        }
+    }
+    static class CharsetRecog_IBM424_he_ltr extends CharsetRecog_IBM424_he 
+    {
+        public String getName()
+        {
+            return "IBM424_ltr";
+        }
+        private static int[] ngrams = {
+            0x404146, 0x404154, 0x404551, 0x404554, 0x404556, 0x404558, 0x405158, 0x405462, 0x405469, 0x405546, 0x405551, 0x405746, 0x405751, 0x406846, 0x406851, 0x407141,
+            0x407146, 0x407151, 0x414045, 0x414054, 0x414055, 0x414071, 0x414540, 0x414645, 0x415440, 0x415640, 0x424045, 0x424055, 0x424071, 0x454045, 0x454051, 0x454054,
+            0x454055, 0x454057, 0x454068, 0x454071, 0x455440, 0x464140, 0x464540, 0x484140, 0x514140, 0x514240, 0x514540, 0x544045, 0x544055, 0x544071, 0x546240, 0x546940,
+            0x555151, 0x555158, 0x555168, 0x564045, 0x564055, 0x564071, 0x564240, 0x564540, 0x624540, 0x694045, 0x694055, 0x694071, 0x694540, 0x714140, 0x714540, 0x714651
+
+        };
+        public int match(CharsetDetector det)
+        {
+            return match(det, ngrams, byteMap, (byte)0x40);
+        }
+    }
+    
+    abstract static class CharsetRecog_IBM420_ar extends CharsetRecog_sbcs
+    {
+        //arabic shaping class, method shape/unshape
+        protected static ArabicShaping as = new ArabicShaping(ArabicShaping.LETTERS_UNSHAPE);
+        protected byte[] prev_fInputBytes = null;
+
+        protected static byte[] byteMap = {
+/*                 -0           -1           -2           -3           -4           -5           -6           -7           -8           -9           -A           -B           -C           -D           -E           -F   */
+/* 0- */    (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* 1- */    (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* 2- */    (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* 3- */    (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* 4- */    (byte) 0x40, (byte) 0x40, (byte) 0x42, (byte) 0x43, (byte) 0x44, (byte) 0x45, (byte) 0x46, (byte) 0x47, (byte) 0x48, (byte) 0x49, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* 5- */    (byte) 0x40, (byte) 0x51, (byte) 0x52, (byte) 0x40, (byte) 0x40, (byte) 0x55, (byte) 0x56, (byte) 0x57, (byte) 0x58, (byte) 0x59, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* 6- */    (byte) 0x40, (byte) 0x40, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66, (byte) 0x67, (byte) 0x68, (byte) 0x69, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* 7- */    (byte) 0x70, (byte) 0x71, (byte) 0x72, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, (byte) 0x78, (byte) 0x79, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* 8- */    (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, 
+/* 9- */    (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, 
+/* A- */    (byte) 0xA0, (byte) 0x40, (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, 
+/* B- */    (byte) 0xB0, (byte) 0xB1, (byte) 0xB2, (byte) 0xB3, (byte) 0xB4, (byte) 0xB5, (byte) 0x40, (byte) 0x40, (byte) 0xB8, (byte) 0xB9, (byte) 0xBA, (byte) 0xBB, (byte) 0xBC, (byte) 0xBD, (byte) 0xBE, (byte) 0xBF, 
+/* C- */    (byte) 0x40, (byte) 0x81, (byte) 0x82, (byte) 0x83, (byte) 0x84, (byte) 0x85, (byte) 0x86, (byte) 0x87, (byte) 0x88, (byte) 0x89, (byte) 0x40, (byte) 0xCB, (byte) 0x40, (byte) 0xCD, (byte) 0x40, (byte) 0xCF, 
+/* D- */    (byte) 0x40, (byte) 0x91, (byte) 0x92, (byte) 0x93, (byte) 0x94, (byte) 0x95, (byte) 0x96, (byte) 0x97, (byte) 0x98, (byte) 0x99, (byte) 0xDA, (byte) 0xDB, (byte) 0xDC, (byte) 0xDD, (byte) 0xDE, (byte) 0xDF, 
+/* E- */    (byte) 0x40, (byte) 0x40, (byte) 0xA2, (byte) 0xA3, (byte) 0xA4, (byte) 0xA5, (byte) 0xA6, (byte) 0xA7, (byte) 0xA8, (byte) 0xA9, (byte) 0xEA, (byte) 0xEB, (byte) 0x40, (byte) 0xED, (byte) 0xEE, (byte) 0xEF, 
+/* F- */    (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0xFB, (byte) 0xFC, (byte) 0xFD, (byte) 0xFE, (byte) 0x40, 
+        };
+        
+        protected static byte[] unshapeMap = {
+/*                 -0           -1           -2           -3           -4           -5           -6           -7           -8           -9           -A           -B           -C           -D           -E           -F   */
+/* 0- */    (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* 1- */    (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* 2- */    (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* 3- */    (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, (byte) 0x40, 
+/* 4- */    (byte) 0x40, (byte) 0x40, (byte) 0x42, (byte) 0x42, (byte) 0x44, (byte) 0x45, (byte) 0x46, (byte) 0x47, (byte) 0x47, (byte) 0x49, (byte) 0x4A, (byte) 0x4B, (byte) 0x4C, (byte) 0x4D, (byte) 0x4E, (byte) 0x4F, 
+/* 5- */    (byte) 0x50, (byte) 0x49, (byte) 0x52, (byte) 0x53, (byte) 0x54, (byte) 0x55, (byte) 0x56, (byte) 0x56, (byte) 0x58, (byte) 0x58, (byte) 0x5A, (byte) 0x5B, (byte) 0x5C, (byte) 0x5D, (byte) 0x5E, (byte) 0x5F, 
+/* 6- */    (byte) 0x60, (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x63, (byte) 0x65, (byte) 0x65, (byte) 0x67, (byte) 0x67, (byte) 0x69, (byte) 0x6A, (byte) 0x6B, (byte) 0x6C, (byte) 0x6D, (byte) 0x6E, (byte) 0x6F, 
+/* 7- */    (byte) 0x69, (byte) 0x71, (byte) 0x71, (byte) 0x73, (byte) 0x74, (byte) 0x75, (byte) 0x76, (byte) 0x77, (byte) 0x77, (byte) 0x79, (byte) 0x7A, (byte) 0x7B, (byte) 0x7C, (byte) 0x7D, (byte) 0x7E, (byte) 0x7F, 
+/* 8- */    (byte) 0x80, (byte) 0x81, (byte) 0x82, (byte) 0x83, (byte) 0x84, (byte) 0x85, (byte) 0x86, (byte) 0x87, (byte) 0x88, (byte) 0x89, (byte) 0x80, (byte) 0x8B, (byte) 0x8B, (byte) 0x8D, (byte) 0x8D, (byte) 0x8F, 
+/* 9- */    (byte) 0x90, (byte) 0x91, (byte) 0x92, (byte) 0x93, (byte) 0x94, (byte) 0x95, (byte) 0x96, (byte) 0x97, (byte) 0x98, (byte) 0x99, (byte) 0x9A, (byte) 0x9A, (byte) 0x9A, (byte) 0x9A, (byte) 0x9E, (byte) 0x9E, 
+/* A- */    (byte) 0x9E, (byte) 0xA1, (byte) 0xA2, (byte) 0xA3, (byte) 0xA4, (byte) 0xA5, (byte) 0xA6, (byte) 0xA7, (byte) 0xA8, (byte) 0xA9, (byte) 0x9E, (byte) 0xAB, (byte) 0xAB, (byte) 0xAD, (byte) 0xAD, (byte) 0xAF, 
+/* B- */    (byte) 0xAF, (byte) 0xB1, (byte) 0xB2, (byte) 0xB3, (byte) 0xB4, (byte) 0xB5, (byte) 0xB6, (byte) 0xB7, (byte) 0xB8, (byte) 0xB9, (byte) 0xB1, (byte) 0xBB, (byte) 0xBB, (byte) 0xBD, (byte) 0xBD, (byte) 0xBF, 
+/* C- */    (byte) 0xC0, (byte) 0xC1, (byte) 0xC2, (byte) 0xC3, (byte) 0xC4, (byte) 0xC5, (byte) 0xC6, (byte) 0xC7, (byte) 0xC8, (byte) 0xC9, (byte) 0xCA, (byte) 0xBF, (byte) 0xCC, (byte) 0xBF, (byte) 0xCE, (byte) 0xCF, 
+/* D- */    (byte) 0xD0, (byte) 0xD1, (byte) 0xD2, (byte) 0xD3, (byte) 0xD4, (byte) 0xD5, (byte) 0xD6, (byte) 0xD7, (byte) 0xD8, (byte) 0xD9, (byte) 0xDA, (byte) 0xDA, (byte) 0xDC, (byte) 0xDC, (byte) 0xDC, (byte) 0xDF, 
+/* E- */    (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, 
+/* F- */    (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 getLanguage()
+        {
+            return "ar";
+        }
+        protected void matchInit(CharsetDetector det) 
+        {
+            prev_fInputBytes = det.fInputBytes.clone();
+            byte bb[] = unshape(det.fInputBytes);
+            det.setText(bb);
+        }
+        
+        /*
+         * Arabic shaping needs to be done manually. Cannot call ArabicShaping class
+         * because CharsetDetector is dealing with bytes not Unicode code points. We could
+         * convert the bytes to Unicode code points but that would leave us dependent
+         * on CharsetICU which we try to avoid. IBM420 converter amongst different versions
+         * of JDK can produce different results and therefore is also avoided.
+         */
+        private byte[] unshape(byte[] inputBytes) {
+            byte resultByteArr[] = unshapeLamAlef(inputBytes);
+            
+            for (int i=0; i<inputBytes.length; i++){
+                resultByteArr[i] = unshapeMap[resultByteArr[i]& 0xFF];
+            }
+            return resultByteArr;
+        }
+
+        private byte[] unshapeLamAlef(byte[] inputBytes) {
+            ByteBuffer resultBigBuffer =  ByteBuffer.allocate(inputBytes.length*2);
+            ByteBuffer resultBuffer;
+            byte unshapedLamAlef[] = {(byte)0xb1, (byte)0x56};
+
+           
+            for (int i=0; i<inputBytes.length; i++){
+                if (isLamAlef(inputBytes[i]))
+                    resultBigBuffer.put(unshapedLamAlef);
+                else
+                    resultBigBuffer.put(inputBytes[i]);
+            }
+            resultBuffer = ByteBuffer.allocate(resultBigBuffer.position());
+            resultBuffer.put(resultBigBuffer.array(),0, resultBigBuffer.position());
+            return resultBuffer.array();
+        }
+        
+        private boolean isLamAlef(byte b) {
+            byte shapedLamAlef[] = {(byte)0xb2,(byte)0xb3,(byte)0xb4,(byte)0xb5,(byte)0xb7,(byte)0xb8 };
+            for (int i = 0; i<shapedLamAlef.length; i++)
+                if (b == shapedLamAlef[i])
+                    return true;
+            return false;
+        }
+        
+        protected void matchFinish(CharsetDetector det) {
+            if (prev_fInputBytes != null)
+                det.setText(prev_fInputBytes);
+        }
+        
+    }
+    static class CharsetRecog_IBM420_ar_rtl extends CharsetRecog_IBM420_ar 
+    {
+        private static int[] ngrams = {
+            0x4056B1, 0x4056BD, 0x405856, 0x409AB1, 0x40ABDC, 0x40B1B1, 0x40BBBD, 0x40CF56, 0x564056, 0x564640, 0x566340, 0x567540, 0x56B140, 0x56B149, 0x56B156, 0x56B158,
+            0x56B163, 0x56B167, 0x56B169, 0x56B173, 0x56B178, 0x56B19A, 0x56B1AD, 0x56B1BB, 0x56B1CF, 0x56B1DC, 0x56BB40, 0x56BD40, 0x56BD63, 0x584056, 0x624056, 0x6240AB,
+            0x6240B1, 0x6240BB, 0x6240CF, 0x634056, 0x734056, 0x736240, 0x754056, 0x756240, 0x784056, 0x9A4056, 0x9AB1DA, 0xABDC40, 0xB14056, 0xB16240, 0xB1DA40, 0xB1DC40,
+            0xBB4056, 0xBB5640, 0xBB6240, 0xBBBD40, 0xBD4056, 0xBF4056, 0xBF5640, 0xCF56B1, 0xCFBD40, 0xDA4056, 0xDC4056, 0xDC40BB, 0xDC40CF, 0xDC6240, 0xDC7540, 0xDCBD40,
+        };
+
+        public String getName()
+        {
+            return "IBM420_rtl";
+        }
+        public int match(CharsetDetector det)
+        {
+            matchInit(det);
+            int result =  match(det, ngrams, byteMap, (byte)0x40);
+            matchFinish(det);
+            return result;
+        }
+        
+    }
+    static class CharsetRecog_IBM420_ar_ltr extends CharsetRecog_IBM420_ar 
+    {
+        private static int[] ngrams = {
+            0x404656, 0x4056BB, 0x4056BF, 0x406273, 0x406275, 0x4062B1, 0x4062BB, 0x4062DC, 0x406356, 0x407556, 0x4075DC, 0x40B156, 0x40BB56, 0x40BD56, 0x40BDBB, 0x40BDCF, 
+            0x40BDDC, 0x40DAB1, 0x40DCAB, 0x40DCB1, 0x49B156, 0x564056, 0x564058, 0x564062, 0x564063, 0x564073, 0x564075, 0x564078, 0x56409A, 0x5640B1, 0x5640BB, 0x5640BD,
+            0x5640BF, 0x5640DA, 0x5640DC, 0x565840, 0x56B156, 0x56CF40, 0x58B156, 0x63B156, 0x63BD56, 0x67B156, 0x69B156, 0x73B156, 0x78B156, 0x9AB156, 0xAB4062, 0xADB156,
+            0xB14062, 0xB15640, 0xB156CF, 0xB19A40, 0xB1B140, 0xBB4062, 0xBB40DC, 0xBBB156, 0xBD5640, 0xBDBB40, 0xCF4062, 0xCF40DC, 0xCFB156, 0xDAB19A, 0xDCAB40, 0xDCB156
+        };
+
+        public String getName()
+        {
+            return "IBM420_ltr";
+        }
+        public int match(CharsetDetector det)
+        {
+            matchInit(det);
+            int result = match(det, ngrams, byteMap, (byte)0x40);
+            matchFinish(det);
+            return result;
+        }
+        
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/text/CharsetRecognizer.java b/main/classes/core/src/com/ibm/icu/text/CharsetRecognizer.java
new file mode 100644
index 0000000..284bb21
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/ChineseDateFormat.java b/main/classes/core/src/com/ibm/icu/text/ChineseDateFormat.java
new file mode 100644
index 0000000..7986f7a
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/ChineseDateFormat.java
@@ -0,0 +1,276 @@
+/*********************************************************************
+ * Copyright (C) 2000-2009, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ *********************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.io.InvalidObjectException;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Locale;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ChineseCalendar;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * 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) {
+       this(pattern, null, 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, String override, ULocale locale) {
+       super(pattern, new ChineseDateFormatSymbols(locale), 
+               new ChineseCalendar(TimeZone.getDefault(), locale), locale, true, override);
+    }
+
+// 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(numberFormat,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;
+        }
+            ///CLOVER:OFF
+        default:
+            return 0; // This can never happen
+            ///CLOVER:ON
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @stable ICU 3.8
+     */
+    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
+         */
+        ///CLOVER:OFF
+        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.");
+            }
+        }
+        ///CLOVER:ON
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/text/ChineseDateFormatSymbols.java b/main/classes/core/src/com/ibm/icu/text/ChineseDateFormatSymbols.java
new file mode 100644
index 0000000..a6970eb
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/ComposedCharIter.java b/main/classes/core/src/com/ibm/icu/text/ComposedCharIter.java
new file mode 100644
index 0000000..9622f57
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/CurrencyFormat.java b/main/classes/core/src/com/ibm/icu/text/CurrencyFormat.java
new file mode 100644
index 0000000..a941df8
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/CurrencyPluralInfo.java b/main/classes/core/src/com/ibm/icu/text/CurrencyPluralInfo.java
new file mode 100644
index 0000000..2ed7da5
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/CurrencyPluralInfo.java
@@ -0,0 +1,343 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+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;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+/**
+ * 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 = pluralCountToCurrencyUnitPattern.get(pluralCount);
+        if (currencyPluralPattern == null) {
+            // fall back to "other"
+            if (!pluralCount.equals("other")) {
+                currencyPluralPattern = 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<String, String>();
+            for (String pluralCount : pluralCountToCurrencyUnitPattern.keySet()) {
+                String currencyPattern = 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<String> 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<String, String>();
+        Set<String> pluralCountSet = new HashSet<String>();
+        ULocale parentLocale = uloc;
+        String numberStylePattern = NumberFormat.getPattern(uloc, NumberFormat.NUMBERSTYLE);
+        // Split the number style pattern into pos and neg if applicable
+        int separatorIndex = numberStylePattern.indexOf(";");
+        String negNumberPattern = null;
+        if (separatorIndex != -1) {
+            negNumberPattern = numberStylePattern.substring(separatorIndex + 1);
+            numberStylePattern = numberStylePattern.substring(0, separatorIndex);
+        }
+        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 = pattern.replace("{0}", numberStylePattern);
+                    String patternWithCurrencySign = patternWithNumber.replace("{1}", tripleCurrencyStr);
+                    if (separatorIndex != -1) {
+                        String negPattern = pattern;
+                        String negWithNumber = negPattern.replace("{0}", negNumberPattern); 
+                        String negWithCurrSign = negWithNumber.replace("{1}", tripleCurrencyStr); 
+                        StringBuffer posNegPatterns = new StringBuffer(patternWithCurrencySign);
+                        posNegPatterns.append(";");
+                        posNegPatterns.append(negWithCurrSign);
+                        patternWithCurrencySign = posNegPatterns.toString();
+                        
+                    } 
+                    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<String, String> 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/main/classes/core/src/com/ibm/icu/text/DateFormat.java b/main/classes/core/src/com/ibm/icu/text/DateFormat.java
new file mode 100644
index 0000000..64256b2
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/DateFormat.java
@@ -0,0 +1,1802 @@
+/*
+*   Copyright (C) 1996-2009, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*/
+
+package com.ibm.icu.text;
+
+import java.io.InvalidObjectException;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.RelativeDateFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.GregorianCalendar;
+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 locale 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
+     * occurrence 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 occurrence 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.  When the calendar type is different from
+     * the internal calendar held by this DateFormat instance, the date
+     * and the time zone will be inherited from the input calendar, but
+     * other calendar field values will be calculated by the internal calendar.
+     * @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
+     * occurrence 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 occurrence 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
+     * occurrence 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 occurrence 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.  When the calendar type is different
+     *              from the internal calendar held by this DateFormat
+     *              instance, calendar field values will be parsed based
+     *              on the internal calendar initialized with the time and
+     *              the time zone taken from this calendar, then the
+     *              parse result (time in milliseconds and time zone) will
+     *              be set back to this calendar.
+     *
+     * @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.
+     * @stable ICU 3.8
+     */
+    public static final int RELATIVE = (1 << 7);
+
+    /**
+     * Constant for relative full style pattern.
+     * @stable ICU 3.8
+     */
+    public static final int RELATIVE_FULL = RELATIVE | FULL;
+
+    /**
+     * Constant for relative style pattern.
+     * @stable ICU 3.8
+     */
+    public static final int RELATIVE_LONG = RELATIVE | LONG;
+
+    /**
+     * Constant for relative style pattern.
+     * @stable ICU 3.8
+     */
+    public static final int RELATIVE_MEDIUM = RELATIVE | MEDIUM;
+
+    /**
+     * Constant for relative style pattern.
+     * @stable ICU 3.8
+     */
+    public static final int RELATIVE_SHORT = RELATIVE | SHORT;
+
+    /**
+     * Constant for relative default style pattern.
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 4.0
+     */
+    public static final String MINUTE_SECOND = "ms";
+
+    /** 
+     * Constant for date pattern with hour and minute in 24-hour presentation.
+     * @stable ICU 4.0
+     */
+    public static final String HOUR24_MINUTE = "Hm";
+
+    /** 
+     * Constant for date pattern with hour, minute, and second in
+     * 24-hour presentation.
+     * @stable ICU 4.0
+     */
+    public static final String HOUR24_MINUTE_SECOND = "Hms";      
+
+    /** 
+     * Constant for date pattern with hour, minute, and second.
+     * @stable ICU 4.0
+     */
+    public static final String HOUR_MINUTE_SECOND = "hms";
+
+    /** 
+     * Constant for date pattern with standalone month.
+     * @stable ICU 4.0
+     */
+    public static final String STANDALONE_MONTH = "LLLL";
+
+    /** 
+     * Constant for date pattern with standalone abbreviated month.
+     * @stable ICU 4.0
+     */
+    public static final String ABBR_STANDALONE_MONTH = "LLL";
+
+    /** 
+     * Constant for date pattern with year and quarter.
+     * @stable ICU 4.0
+     */
+    public static final String YEAR_QUARTER = "yQQQ";
+    
+    /** 
+     * Constant for date pattern with year and abbreviated quarter.
+     * @stable ICU 4.0
+     */
+    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 minute.
+     * @stable ICU 4.0
+     */
+    public static final String HOUR_MINUTE = "hm";
+
+    /** 
+     * Constant for date pattern with year.
+     * @stable ICU 4.0
+     */
+    public static final String YEAR = "y";
+
+    /** 
+     * Constant for date pattern with day.
+     * @stable ICU 4.0
+     */
+    public static final String DAY = "d";
+
+    /** 
+     * Constant for date pattern with numeric month, weekday, and day.
+     * @stable ICU 4.0
+     */
+    public static final String NUM_MONTH_WEEKDAY_DAY = "MEd";
+
+    /** 
+     * Constant for date pattern with year and numeric month.
+     * @stable ICU 4.0
+     */
+    public static final String YEAR_NUM_MONTH = "yM";              
+
+    /** 
+     * Constant for date pattern with numeric month and day.
+     * @stable ICU 4.0
+     */
+    public static final String NUM_MONTH_DAY = "Md";
+
+    /** 
+     * Constant for date pattern with year, numeric month, weekday, and day.
+     * @stable ICU 4.0
+     */
+    public static final String YEAR_NUM_MONTH_WEEKDAY_DAY = "yMEd";
+
+    /** 
+     * Constant for date pattern with abbreviated month, weekday, and day.
+     * @stable ICU 4.0
+     */
+    public static final String ABBR_MONTH_WEEKDAY_DAY = "MMMEd";
+
+    /** 
+     * Constant for date pattern with year and month.
+     * @stable ICU 4.0
+     */
+    public static final String YEAR_MONTH = "yMMMM";
+
+    /** 
+     * Constant for date pattern with year and abbreviated month.
+     * @stable ICU 4.0
+     */
+    public static final String YEAR_ABBR_MONTH = "yMMM";
+
+    /** 
+     * Constant for date pattern having month and day.
+     * @stable ICU 4.0
+     */
+    public static final String MONTH_DAY = "MMMMd";
+
+    /** 
+     * Constant for date pattern with abbreviated month and day.
+     * @stable ICU 4.0
+     */
+    public static final String ABBR_MONTH_DAY = "MMMd"; 
+
+    /** 
+     * Constant for date pattern with month, weekday, and day.
+     * @stable ICU 4.0
+     */
+    public static final String MONTH_WEEKDAY_DAY = "MMMMEEEEd";
+
+    /** 
+     * Constant for date pattern with year, abbreviated month, weekday, 
+     * and day.
+     * @stable ICU 4.0
+     */
+    public static final String YEAR_ABBR_MONTH_WEEKDAY_DAY = "yMMMEd"; 
+
+    /** 
+     * Constant for date pattern with year, month, weekday, and day.
+     * @stable ICU 4.0
+     */
+    public static final String YEAR_MONTH_WEEKDAY_DAY = "yMMMMEEEEd";
+
+    /** 
+     * Constant for date pattern with year, month, and day.
+     * @stable ICU 4.0
+     */
+    public static final String YEAR_MONTH_DAY = "yMMMMd";
+
+    /** 
+     * Constant for date pattern with year, abbreviated month, and day.
+     * @stable ICU 4.0
+     */
+    public static final String YEAR_ABBR_MONTH_DAY = "yMMMd";
+
+    /** 
+     * Constant for date pattern with year, numeric month, and day.
+     * @stable ICU 4.0
+     */
+    public static final String YEAR_NUM_MONTH_DAY = "yMd";
+
+    /** 
+     * Constant for date pattern with numeric month.
+     * @stable ICU 4.0
+     */
+    public static final String NUM_MONTH = "M";
+
+    /** 
+     * Constant for date pattern with abbreviated month.
+     * @stable ICU 4.0
+     */
+    public static final String ABBR_MONTH = "MMM";
+
+    /** 
+     * Constant for date pattern with month.
+     * @stable ICU 4.0
+     */
+    public static final String MONTH = "MMMM";
+
+    /** 
+     * Constant for date pattern with hour, minute, and generic timezone.
+     * @stable ICU 4.0
+     */
+    public static final String HOUR_MINUTE_GENERIC_TZ = "hmv";
+
+    /** 
+     * Constant for date pattern with hour, minute, and timezone.
+     * @stable ICU 4.0
+     */
+    public static final String HOUR_MINUTE_TZ = "hmz";
+
+    /** 
+     * Constant for date pattern with hour.
+     * @stable ICU 4.0
+     */
+    public static final String HOUR = "h";
+
+    /** 
+     * Constant for date pattern with hour and generic timezone.
+     * @stable ICU 4.0
+     */
+    public static final String HOUR_GENERIC_TZ = "hv";
+
+    /** 
+     * Constant for date pattern with hour and timezone.
+     * @stable ICU 4.0
+     */
+    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();
+    }
+
+    /**
+     * 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();
+    }
+
+    /**
+     * 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
+     * @stable ICU 4.0
+     */
+    public final static DateFormat getPatternInstance(String pattern) {
+        return getPatternInstance(pattern, ULocale.getDefault());
+    }
+
+    /**
+     * Convenience overload
+     * @stable ICU 4.0
+     */
+    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.
+     *
+     * @stable ICU 4.0
+     */
+    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
+     * @stable ICU 4.0
+     */
+    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.
+     *
+     * @stable ICU 4.0
+     */
+    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;
+    }
+
+    /**
+     * 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<String, Field> 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<String, Field>(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;
+        }
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/text/DateFormatSymbols.java b/main/classes/core/src/com/ibm/icu/text/DateFormatSymbols.java
new file mode 100644
index 0000000..0a2166b
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/DateFormatSymbols.java
@@ -0,0 +1,1692 @@
+/*
+ *******************************************************************************
+ * 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.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.CalendarUtil;
+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, CalendarUtil.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.
+     * @stable ICU 3.8
+     */
+    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();
+    }
+
+    /**
+     * 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 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ULocale[] getAvailableULocales() {
+        return ICUResourceBundle.getAvailableULocales();
+    }
+    
+    /**
+     * 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<String, DateFormatSymbols> DFSCACHE = new SimpleCache<String, DateFormatSymbols>();
+
+    /**
+     * 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 = 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 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<? extends Calendar> 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<? extends Calendar> calendarClass, ULocale locale) {
+        String fullName = calendarClass.getName();
+        int lastDot = fullName.lastIndexOf('.');
+        String className = fullName.substring(lastDot+1);
+        String calType = className.replaceAll("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, CalendarUtil.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<? extends Calendar> 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<? extends Calendar> 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;
+    }
+
+    // -------- 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/main/classes/core/src/com/ibm/icu/text/DateIntervalFormat.java b/main/classes/core/src/com/ibm/icu/text/DateIntervalFormat.java
new file mode 100644
index 0000000..a619f6e
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/DateIntervalFormat.java
@@ -0,0 +1,1608 @@
+/*
+*   Copyright (C) 2008-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.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import com.ibm.icu.impl.CalendarData;
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.SimpleCache;
+import com.ibm.icu.text.DateIntervalInfo.PatternInfo;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.DateInterval;
+import com.ibm.icu.util.ULocale;
+
+
+/**
+ * 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>
+ * @stable ICU 4.0
+ */
+
+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<String, Map<String, PatternInfo>> LOCAL_PATTERN_CACHE =
+        new SimpleCache<String, Map<String, PatternInfo>>();
+    
+    /*
+     * 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;
+
+    private transient Map<String, PatternInfo> 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.
+     * @stable ICU 4.0
+     */
+    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.
+     * @stable ICU 4.0
+     */
+    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.
+     * @stable ICU 4.0
+     */
+    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.
+     * @stable ICU 4.0
+     */
+    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.
+     * @stable ICU 4.0
+     */
+    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.
+     * @stable ICU 4.0
+     */
+    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.
+     * @stable ICU 4.0
+     */
+    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
+     * @stable ICU 4.0
+     */
+    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.
+     * @stable ICU 4.0
+     */
+    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.
+     * @stable ICU 4.0
+     */
+    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 = -1; //init with an invalid value.
+    
+        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
+        PatternInfo intervalPattern = 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.
+     * @stable ICU 4.0
+     */
+    public DateIntervalInfo getDateIntervalInfo()
+    {
+        return (DateIntervalInfo)fInfo.clone();
+    }
+
+
+    /**
+     * Set the date time interval patterns. 
+     * @param newItvPattern   the given interval patterns to copy.
+     * @stable ICU 4.0
+     */
+    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.
+     * @stable ICU 4.0
+     */
+    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 = fDateFormat.toPattern();
+        ULocale locale = fDateFormat.getLocale();
+        String key;
+        if ( fSkeleton != null ) {
+            key = locale.toString() + "+" + fullPattern + "+" + fSkeleton;
+        } else {
+            key = locale.toString() + "+" + fullPattern;
+        }
+        Map<String, PatternInfo> patterns = LOCAL_PATTERN_CACHE.get(key);
+        if ( patterns == null ) {
+            Map<String, PatternInfo> 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 Map<String, PatternInfo> 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<String, PatternInfo> intervalPatterns = new HashMap<String, PatternInfo>();
+
+        /* 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.
+                    PatternInfo ptn = new 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.
+            PatternInfo ptn = new 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.getDateTimePatterns();
+            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,
+                                    Map<String, PatternInfo> 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.
+        PatternInfo ptn = new 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,
+                                           Map<String, PatternInfo> 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, Map<String, PatternInfo> intervalPatterns) {
+        SkeletonAndItsBestMatch retValue = null;
+        PatternInfo pattern = fInfo.getIntervalPattern(
+                                           bestSkeleton, field);
+        if ( pattern == null ) {
+            // single date
+            if ( SimpleDateFormat.isFieldUnitIgnored(bestSkeleton, field) ) {
+                PatternInfo ptnInfo = 
+                    new 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 PatternInfo(part1, part2, 
+                                           pattern.firstDateInPtnIsLaterDate());
+            } else {
+                // pattern is immutable, no need to clone; 
+                // pattern = (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[skeletonChar - PATTERN_CHAR_BASE];
+                int inputFieldCount = inputSkeletonFieldWidth[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[skeletonChar - PATTERN_CHAR_BASE];
+            int inputFieldCount = inputSkeletonFieldWidth[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,
+                                               Map<String, PatternInfo> intervalPatterns)
+    {
+
+        PatternInfo  timeItvPtnInfo = 
+            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/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java b/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java
new file mode 100644
index 0000000..79bcaee
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/DateIntervalInfo.java
@@ -0,0 +1,941 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.MissingResourceException;
+
+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.util.Calendar;
+import com.ibm.icu.util.Freezable;
+import com.ibm.icu.util.ULocale;
+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.
+ * 
+ * @stable ICU 4.0
+ */
+
+public class DateIntervalInfo implements Cloneable, Freezable<DateIntervalInfo>, 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.
+     * @stable ICU 4.0
+     */
+    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
+         * @stable ICU 4.0
+         */
+        public PatternInfo(String firstPart, String secondPart,
+                           boolean firstDateInPtnIsLaterDate) {
+            fIntervalPatternFirstPart = firstPart;
+            fIntervalPatternSecondPart = secondPart;
+            fFirstDateInPtnIsLaterDate = firstDateInPtnIsLaterDate;
+        }
+
+        /**
+         * accessor
+         * @stable ICU 4.0
+         */
+        public String getFirstPart() {
+            return fIntervalPatternFirstPart;
+        }
+
+        /**
+         * accessor
+         * @stable ICU 4.0
+         */
+        public String getSecondPart() {
+            return fIntervalPatternSecondPart;
+        }
+
+        /**
+         * accessor
+         * @stable ICU 4.0
+         */
+        public boolean firstDateInPtnIsLaterDate() {
+            return fFirstDateInPtnIsLaterDate;
+        }
+
+        /**
+         * Override equals
+         * @stable ICU 4.0
+         */
+        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
+         * @stable ICU 4.0
+         */
+        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<String, DateIntervalInfo> DIICACHE = new SimpleCache<String, DateIntervalInfo>();
+
+    // default interval pattern on the skeleton, {0} - {1}
+    private String fFallbackIntervalPattern;
+    // default order
+    private boolean fFirstDateInPtnIsLaterDate = false;
+
+    // HashMap( skeleton, HashMap(largest_different_field, pattern) )
+    private Map<String, Map<String, PatternInfo>> 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<String, Map<String, PatternInfo>>();
+        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.
+     * @stable ICU 4.0
+     */
+    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 = 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<String, Map<String, PatternInfo>>(DEFAULT_HASH_SIZE);
+        // initialize to guard if there is no interval date format defined in 
+        // resource files
+        fFallbackIntervalPattern = "{0} \u2013 {1}";
+        HashSet<String> skeletonSet = new HashSet<String>();
+        try {
+            // loop through all locales to get all available skeletons'
+            // interval format
+            ULocale parentLocale = locale;
+            do {
+                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 = -1; // initialize with an invalid value.
+                        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 != -1 ) {
+                            setIntervalPatternInternally(skeleton, key, pattern);
+                        }
+                    }
+                }
+                parentLocale = parentLocale.getFallback();
+            } while (parentLocale != null && !parentLocale.equals(ULocale.ROOT));
+        } 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[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[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
+     * @stable ICU 4.0
+     */
+    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) {
+        Map<String, PatternInfo> patternsOfOneSkeleton = fIntervalPatterns.get(skeleton);
+        boolean emptyHash = false;
+        if (patternsOfOneSkeleton == null) {
+            patternsOfOneSkeleton = new HashMap<String, PatternInfo>();
+            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) {
+        Map<String, PatternInfo> patternsOfOneSkeleton = 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 
+     * @stable ICU 4.0
+     */
+    public PatternInfo getIntervalPattern(String skeleton, int field) 
+    {
+        if ( field > MINIMUM_SUPPORTED_CALENDAR_FIELD ) {
+            throw new IllegalArgumentException("no support for field less than MINUTE");
+        }
+        Map<String, PatternInfo> patternsOfOneSkeleton = fIntervalPatterns.get(skeleton);
+        if ( patternsOfOneSkeleton != null ) {
+            PatternInfo intervalPattern = patternsOfOneSkeleton.
+                get(CALENDAR_FIELD_TO_PATTERN_LETTER[field]);
+            if ( intervalPattern != null ) {
+                return intervalPattern;
+            }
+        }
+        return null;
+    }
+
+
+
+    /**
+     * Get the fallback interval pattern.
+     * @return fallback interval pattern
+     * @stable ICU 4.0
+     */
+    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
+     *                   
+     * @stable ICU 4.0
+     */
+    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.
+     * @stable ICU 4.0
+     */
+    public boolean getDefaultOrder()
+    {
+        return fFirstDateInPtnIsLaterDate;
+    }
+
+
+    /**
+     * Boilerplate. Clone this object.
+     * @return     a copy of the object
+     * @stable ICU4.0
+     */
+    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<String, Map<String, PatternInfo>>();
+            for (String skeleton : fIntervalPatterns.keySet()) {
+                Map<String, PatternInfo> patternsOfOneSkeleton = fIntervalPatterns.get(skeleton);
+                Map<String, PatternInfo> oneSetPtn = new HashMap<String, PatternInfo>();
+                for (String calField : patternsOfOneSkeleton.keySet()) {
+                    PatternInfo value = patternsOfOneSkeleton.get(calField);
+                    oneSetPtn.put(calField, value);
+                }
+                other.fIntervalPatterns.put(skeleton, oneSetPtn);
+            }
+            other.frozen = false;
+            return other;
+        } catch ( CloneNotSupportedException e ) {
+            ///CLOVER:OFF
+            throw new  IllegalStateException("clone is not supported");
+            ///CLOVER:ON
+        }
+    }
+
+    
+    /**
+     * Boilerplate for Freezable
+     * @stable ICU 4.0
+     */
+    public boolean isFrozen() {
+        return frozen;
+    }
+    
+    /**
+     * Boilerplate for Freezable
+     * @stable ICU 4.0
+     */
+    public DateIntervalInfo freeze() {
+        frozen = true;
+        return this;
+    }
+    
+    /**
+     * Boilerplate for Freezable
+     * @stable ICU 4.0
+     */
+    public DateIntervalInfo 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[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;
+        for (String skeleton : fIntervalPatterns.keySet()) {
+            // 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
+     * @stable ICU 4.0
+     */
+    public boolean equals(Object a) {
+        if ( a instanceof DateIntervalInfo ) {
+            DateIntervalInfo dtInfo = (DateIntervalInfo)a;
+            return fIntervalPatterns.equals(dtInfo.fIntervalPatterns);
+        }
+        return false;
+    }
+
+    /**
+     * Override hashcode
+     * @stable ICU 4.0
+     */
+    public int hashCode() {
+        return fIntervalPatterns.hashCode();
+    }
+}// end class DateIntervalInfo
diff --git a/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java b/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java
new file mode 100644
index 0000000..43cb7dd
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/DateTimePatternGenerator.java
@@ -0,0 +1,1844 @@
+/*
+ ********************************************************************************
+ * Copyright (C) 2006-2009, Google, International Business Machines Corporation *
+ * and others. All Rights Reserved.                                             *
+ ********************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.BitSet;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+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;
+
+/**
+ * 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<DateTimePatternGenerator>, 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 the default 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 The locale to pass.
+     * @stable ICU 3.6
+     */
+    public static DateTimePatternGenerator getInstance(ULocale uLocale) {
+        return getFrozenInstance(uLocale).cloneAsThawed();
+    }
+
+    /**
+     * Construct a frozen instance of DateTimePatternGenerator for a
+     * given locale.  This method returns a cached frozen instance of
+     * DateTimePatternGenerator, so less expensive than the regular
+     * factory method.
+     * @param uLocale The locale to pass.
+     * @return A frozen DateTimePatternGenerator.
+     * @internal
+     */
+    public static DateTimePatternGenerator getFrozenInstance(ULocale uLocale) {
+        String localeKey = uLocale.toString();
+        DateTimePatternGenerator result = 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 shortTimePattern = 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);
+            if (i == DateFormat.SHORT) {
+                // keep this pattern to populate other time field
+                // combination patterns by hackTimes later in this method.
+                shortTimePattern = df.toPattern();
+
+                // use hour style in SHORT time pattern as the default
+                // hour style for the locale
+                FormatParser fp = new FormatParser();
+                fp.set(shortTimePattern);
+                List<Object> items = fp.getItems();
+                for (int idx = 0; idx < items.size(); idx++) {
+                    Object item = items.get(idx);
+                    if (item instanceof VariableField) {
+                        VariableField fld = (VariableField)item;
+                        if (fld.getType() == HOUR) {
+                            result.defaultHourFormatChar = fld.toString().charAt(0);
+                            break;
+                        }
+                    }
+                }
+            }
+        }
+
+        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 (shortTimePattern != null) {
+            hackTimes(result, returnInfo, shortTimePattern);
+        }
+
+        result.setDateTimeFormat(Calendar.getDateTimePattern(Calendar.getInstance(uLocale), uLocale, DateFormat.MEDIUM));
+
+        // decimal point for seconds
+        DecimalFormatSymbols dfs = new DecimalFormatSymbols(uLocale);
+        result.setDecimal(String.valueOf(dfs.getDecimalSeparator()));
+
+        // freeze and cache
+        result.freeze();
+        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) {
+        return getBestPattern(skeleton, null);
+    }
+
+    /*
+     * getBestPattern which takes optional skip matcher
+     */
+    private String getBestPattern(String skeleton, DateTimeMatcher skipMatcher) {
+        //if (!isComplete) complete();
+        if (chineseMonthHack) {
+            skeleton = skeleton.replaceAll("MMM+", "MM");
+        }
+        // if skeleton contains meta hour field 'j', then
+        // replace it with the default hour format char
+        skeleton = skeleton.replaceAll("j", String.valueOf(defaultHourFormatChar));
+
+        String datePattern, timePattern;
+        synchronized(this) {
+            current.set(skeleton, fp);
+            String best = getBestRaw(current, -1, _distanceInfo, skipMatcher);
+            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.
+            datePattern = getBestAppending(current, neededFields & DATE_MASK, _distanceInfo, skipMatcher);
+            timePattern = getBestAppending(current, neededFields & TIME_MASK, _distanceInfo, skipMatcher);
+        }
+
+        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 overridden. 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 pattern Pattern to add.
+     * @param override When existing values are to be overridden use true, otherwise
+     *            use false.
+     * @param returnInfo Returned information.
+     * @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 = basePattern_pattern.get(basePattern);
+        if (previousPatternWithSameBase != null) {
+            returnInfo.status = PatternInfo.BASE_CONFLICT;
+            returnInfo.conflictingPattern = previousPatternWithSameBase;
+            if (!override) return this;
+        }
+        String previousValue = 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<String, String> getSkeletons(Map<String, String> result) {
+        if (result == null) {
+            result = new LinkedHashMap<String, String>();
+        }
+        for (DateTimeMatcher item : skeleton2pattern.keySet()) {
+            String pattern = 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<String> getBaseSkeletons(Set<String> result) {
+        if (result == null) {
+            result = new HashSet<String>();
+        }
+        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 For the pattern to match to.
+     * @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 "{1} {0}", where {1} will be replaced
+     * by the date pattern and {0} 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 "{1} {0}". 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, where {1} will be replaced by the date
+     *            pattern and {0} 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 The decimal to set to.
+     * @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<String> getRedundants(Collection<String> output) {
+        synchronized (this) { // synchronized since a getter must be thread-safe
+            if (output == null) {
+                output = new LinkedHashSet<String>();
+            }
+            for (DateTimeMatcher cur : skeleton2pattern.keySet()) {
+                String pattern = skeleton2pattern.get(cur);
+                if (CANONICAL_SET.contains(pattern)) {
+                    continue;
+                }
+                String trial = getBestPattern(cur.toString(), cur);
+                if (trial.equals(pattern)) {
+                    output.add(pattern);
+                }
+            }
+            ///CLOVER:OFF
+            //The following would never be called since the parameter is false
+            //Eclipse stated the following is "dead code"
+            /*if (false) { // ordered
+                DateTimePatternGenerator results = new DateTimePatternGenerator();
+                PatternInfo pinfo = new PatternInfo();
+                for (DateTimeMatcher cur : skeleton2pattern.keySet()) {
+                    String pattern = 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);
+                    }
+                }
+            }*/
+            ///CLOVER:ON
+            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 The index to retrieve the append item formats.
+     * @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 Index of the append item names.
+     * @param value The value to set the item to.
+     * @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 The index to get the append item name.
+     * @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 The skeleton to determine if it contains a single field.
+     * @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 DateTimePatternGenerator freeze() {
+        frozen = true;
+        return this;
+    }
+
+    /**
+     * Boilerplate for Freezable
+     * @stable ICU 3.6
+     */
+    public DateTimePatternGenerator cloneAsThawed() {
+        DateTimePatternGenerator result = (DateTimePatternGenerator) (this.clone());
+        frozen = false;
+        return result;
+    }
+
+    /**
+     * Boilerplate
+     * @stable ICU 3.6
+     */
+    @SuppressWarnings("unchecked")
+    public Object clone() {
+        try {
+            DateTimePatternGenerator result = (DateTimePatternGenerator) (super.clone());
+            result.skeleton2pattern = (TreeMap<DateTimeMatcher, String>) skeleton2pattern.clone();
+            result.basePattern_pattern = (TreeMap<String, String>) basePattern_pattern.clone();
+            result.appendItemFormats = appendItemFormats.clone();
+            result.appendItemNames = appendItemNames.clone();
+            result.current = new DateTimeMatcher();
+            result.fp = new FormatParser();
+            result._distanceInfo = new DistanceInfo();
+
+            result.frozen = false;
+            return result;
+        } catch (CloneNotSupportedException e) {
+            ///CLOVER:OFF
+            throw new IllegalArgumentException("Internal Error");
+            ///CLOVER:ON
+        }
+    }
+
+    /**
+     * 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 The string for the variable field.
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public VariableField(String string) {
+            this(string, false);
+        }
+        /**
+         * Create a variable field
+         * @param string The string for the variable field
+         * @param strict If true, then only allows exactly those lengths specified by CLDR for variables. For example, "hh:mm aa" would throw an exception.
+         * @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<Object> items = new ArrayList<Object>();
+
+        /**
+         * 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 The string to parse.
+         * @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  The string to parse.
+         * @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<Object> 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 (Object item : items) {
+                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 The string to check.
+         * @return string with quoted literals
+         * @internal
+         * @deprecated This API is ICU internal only.
+         */
+        public Object quoteLiteral(String string) {
+            return tokenizer.quoteLiteral(string);
+        }
+
+    }
+
+    /**
+    * (moved from CLDR)
+    * @internal
+    */
+    public boolean skeletonsAreSimilar(String id, String skeleton) {
+        if (id.equals(skeleton)) {
+            return true; // fast path
+        }
+        List<Object> parser1 = fp.set(id).getItems();
+        List<Object> parser2 = fp.set(skeleton).getItems();
+        if (parser1.size() != parser2.size()) {
+            return false;
+        }
+        for (int i = 0; i < parser1.size(); ++i) {
+            int index1 = getCanonicalIndex(parser1.get(i).toString(), false);
+            int index2 = getCanonicalIndex(parser2.get(i).toString(), false);
+            if (types[index1][1] != types[index2][1]) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    // ========= PRIVATES ============
+
+    private TreeMap<DateTimeMatcher, String> skeleton2pattern = new TreeMap<DateTimeMatcher, String>(); // items are in priority order
+    private TreeMap<String, String> basePattern_pattern = new TreeMap<String, String>(); // items are in priority order
+    private String decimal = "?";
+    private String dateTimeFormat = "{1} {0}";
+    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 char defaultHourFormatChar = 'H';
+    private boolean chineseMonthHack = false;
+    //private boolean isComplete = false;
+    private boolean frozen = false;
+
+    private transient DateTimeMatcher current = new DateTimeMatcher();
+    private transient FormatParser fp = new FormatParser();
+    private transient DistanceInfo _distanceInfo = new DistanceInfo();
+
+    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<String, DateTimePatternGenerator> DTPNG_CACHE = new SimpleCache<String, DateTimePatternGenerator>();
+
+    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(DateTimeMatcher source, int missingFields, DistanceInfo distInfo, DateTimeMatcher skipMatcher) {
+        String resultPattern = null;
+        if (missingFields != 0) {
+            resultPattern = getBestRaw(source, missingFields, distInfo, skipMatcher);
+            resultPattern = adjustFieldTypes(resultPattern, source, false);
+
+            while (distInfo.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 ((distInfo.missingFieldMask & SECOND_AND_FRACTIONAL_MASK) == FRACTIONAL_MASK
+                        && (missingFields & SECOND_AND_FRACTIONAL_MASK) == SECOND_AND_FRACTIONAL_MASK) {
+                    resultPattern = adjustFieldTypes(resultPattern, source, true);
+                    distInfo.missingFieldMask &= ~FRACTIONAL_MASK; // remove bit
+                    continue;
+                }
+
+                int startingMask = distInfo.missingFieldMask;
+                String temp = getBestRaw(source, distInfo.missingFieldMask, distInfo, skipMatcher);
+                temp = adjustFieldTypes(temp, source, false);
+                int foundMask = startingMask & ~distInfo.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, DateTimeMatcher skipMatcher) {
+        //      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 (DateTimeMatcher trial : skeleton2pattern.keySet()) {
+            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 = 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 (Object item : fp.getItems()) {
+            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 The pattern that is passed.
+     * @return field value
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public String getFields(String pattern) {
+        fp.set(pattern);
+        StringBuffer newPattern = new StringBuffer();
+        for (Object item : fp.getItems()) {
+            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<String> CANONICAL_SET = new HashSet<String>(Arrays.asList(CANONICAL_ITEMS));
+    private Set<String> cldrAvailableFormatKeys = new HashSet<String>(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},
+
+        {'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<DateTimeMatcher> {
+        //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 (Object obj : fp.getItems()) {
+                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;
+        }
+
+        /**
+         * 
+         */
+        @SuppressWarnings("unused")
+        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(DateTimeMatcher that) {
+            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/main/classes/core/src/com/ibm/icu/text/DecimalFormat.java b/main/classes/core/src/com/ibm/icu/text/DecimalFormat.java
new file mode 100644
index 0000000..94d7cb4
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/DecimalFormat.java
@@ -0,0 +1,5394 @@
+/*
+ *******************************************************************************
+ * 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.io.ObjectOutputStream;
+import java.math.BigInteger;
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.text.ChoiceFormat;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParsePosition;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.math.BigDecimal;
+import com.ibm.icu.math.MathContext;
+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() {
+        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());
+            } else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+                fieldPosition.setBeginIndex(result.length());
+            }
+
+            result.append(symbols.getNaN());
+            // [Spark/CDL] Add attribute for NaN here.
+            // result.append(symbols.getNaN());
+            if (parseAttr) {
+                addAttribute(Field.INTEGER, result.length() - symbols.getNaN().length(), result.length());
+            }
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                fieldPosition.setEndIndex(result.length());
+            } else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+                fieldPosition.setEndIndex(result.length());
+            }
+
+            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());
+            } else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+                fieldPosition.setBeginIndex(result.length());
+            }
+
+            // [Spark/CDL] Add attribute for infinity here.
+            result.append(symbols.getInfinity());
+            if (parseAttr) {
+                addAttribute(Field.INTEGER, result.length() - symbols.getInfinity().length(), result.length());
+            }
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                fieldPosition.setEndIndex(result.length());
+            } else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+                fieldPosition.setEndIndex(result.length());
+            }
+
+            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);
+        }
+    }
+
+    /**
+     * 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.
+        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.
+        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);
+        }
+    }
+
+    /**
+     * Format a BigInteger number.
+     * 
+     * @stable ICU 2.0
+     */
+    public StringBuffer format(BigInteger number, StringBuffer result, FieldPosition fieldPosition) {
+        return format(number, result, fieldPosition, false);
+    }
+
+    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);
+        }
+    }
+
+    /**
+     * 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);
+        }
+    }
+
+    /**
+     * 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);
+            } else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+                fieldPosition.setBeginIndex(result.length());
+                fieldPosition.setEndIndex(-1);
+            } else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.FRACTION) {
+                fieldPosition.setBeginIndex(-1);
+            }
+
+            // [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;
+            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());
+                    } else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+                        fieldPosition.setEndIndex(result.length());
+                    }
+
+                    // [Spark/CDL] Add attribute for integer part
+                    if (parseAttr) {
+                        intEnd = result.length();
+                        addAttribute(Field.INTEGER, intBegin, result.length());
+                    }
+                    result.append(decimal);
+                    // [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();
+                    }
+                    // Record field information for caller.
+                    if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD) {
+                        fieldPosition.setBeginIndex(result.length());
+                    } else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.FRACTION) {
+                        fieldPosition.setBeginIndex(result.length());
+                    }
+                }
+                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());
+            } 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());
+            }
+
+            // [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());
+                }
+            }
+
+            // 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());
+            // [Spark/CDL] For exponent symbol, add an attribute.
+            if (parseAttr) {
+                addAttribute(Field.EXPONENT_SYMBOL, result.length() - symbols.getExponentSeparator().length(), result
+                        .length());
+            }
+            // 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());
+                // [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());
+                }
+            } else if (exponentSignAlwaysShown) {
+                result.append(symbols.getPlusSign());
+                // [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());
+                }
+            }
+            int expBegin = result.length();
+            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);
+            }
+            // [Spark/CDL] Add attribute for exponent part.
+            if (parseAttr) {
+                addAttribute(Field.EXPONENT, expBegin, result.length());
+            }
+        } else {
+            // [Spark/CDL] Record the integer start index.
+            int intBegin = result.length();
+            // Record field information for caller.
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                fieldPosition.setBeginIndex(result.length());
+            } else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+                fieldPosition.setBeginIndex(result.length());
+            }
+
+            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);
+                    // [Spark/CDL] Add grouping separator attribute here.
+                    if (parseAttr) {
+                        // Length of grouping separator is 1.
+                        addAttribute(Field.GROUPING_SEPARATOR, result.length() - 1, result.length());
+                    }
+                }
+            }
+
+            // Record field information for caller.
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD) {
+                fieldPosition.setEndIndex(result.length());
+            } else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.INTEGER) {
+                fieldPosition.setEndIndex(result.length());
+            }
+
+            // 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);
+            // [Spark/CDL] Add attribute for integer part.
+            if (parseAttr) {
+                addAttribute(Field.INTEGER, intBegin, result.length());
+            }
+            // Output the decimal separator if we always do so.
+            if (decimalSeparatorAlwaysShown || fractionPresent) {
+                result.append(decimal);
+                // [Spark/CDL] Add attribute for decimal separator
+                if (parseAttr) {
+                    addAttribute(Field.DECIMAL_SEPARATOR, result.length() - 1, result.length());
+                }
+            }
+
+            // Record field information for caller.
+            if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD) {
+                fieldPosition.setBeginIndex(result.length());
+            } else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.FRACTION) {
+                fieldPosition.setBeginIndex(result.length());
+            }
+
+            // [Spark/CDL] Record the begin index of fraction part.
+            int fracBegin = result.length();
+
+            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());
+            } else if (fieldPosition.getFieldAttribute() == NumberFormat.Field.FRACTION) {
+                fieldPosition.setEndIndex(result.length());
+            }
+
+            // [Spark/CDL] Add attribute information if necessary.
+            if (parseAttr && (decimalSeparatorAlwaysShown || fractionPresent)) {
+                addAttribute(Field.FRACTION, fracBegin, result.length());
+            }
+        }
+
+        int suffixLen = appendAffix(result, isNegative, false, parseAttr);
+
+        addPadding(result, fieldPosition, prefixLen, suffixLen);
+        return result;
+    }
+
+    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);
+                }
+            }
+        }
+    }
+
+    /**
+     * 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);
+    }
+
+    /**
+     * 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, Currency.SYMBOL_NAME)) {
+                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;
+        if (style == NumberFormat.PLURALCURRENCYSTYLE) {
+            found = subparse(text, tmpPos, tmpDigitList, false, tmpStatus, currency, negPrefixPattern,
+                    negSuffixPattern, posPrefixPattern, posSuffixPattern, Currency.LONG_NAME);
+        } else {
+            found = subparse(text, tmpPos, tmpDigitList, false, tmpStatus, currency, negPrefixPattern,
+                    negSuffixPattern, posPrefixPattern, posSuffixPattern, Currency.SYMBOL_NAME);
+        }
+        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.
+        for (AffixForCurrency affix : affixPatternsForCurrency) {
+            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(), affix.getPatternType());
+            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, Currency.SYMBOL_NAME);
+        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<AffixForCurrency>();
+
+        // 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, Currency.SYMBOL_NAME);
+        affixPatternsForCurrency.add(affixes);
+
+        // add plural pattern
+        Iterator<String> iter = currencyPluralInfo.pluralPatternIterator();
+        Set<String> currencyUnitPatternSet = new HashSet<String>();
+        while (iter.hasNext()) {
+            String pluralCount = iter.next();
+            String currencyPattern = currencyPluralInfo.getCurrencyPluralPattern(pluralCount);
+            if (currencyPattern != null && currencyUnitPatternSet.contains(currencyPattern) == false) {
+                currencyUnitPatternSet.add(currencyPattern);
+                applyPatternWithoutExpandAffix(currencyPattern, false);
+                affixes = new AffixForCurrency(negPrefixPattern, negSuffixPattern, posPrefixPattern, posSuffixPattern,
+                        Currency.LONG_NAME);
+                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 = new UnicodeSet(
+            //"[.\u2024\u3002\uFE12\uFE52\uFF0E\uFF61]"
+            0x002E, 0x002E,
+            0x2024, 0x2024,
+            0x3002, 0x3002,
+            0xFE12, 0xFE12,
+            0xFE52, 0xFE52,
+            0xFF0E, 0xFF0E,
+            0xFF61, 0xFF61).freeze();
+
+    private static final UnicodeSet commaEquivalents = new UnicodeSet(
+            //"[,\u060C\u066B\u3001\uFE10\uFE11\uFE50\uFE51\uFF0C\uFF64]"
+            0x002C, 0x002C,
+            0x060C, 0x060C,
+            0x066B, 0x066B,
+            0x3001, 0x3001,
+            0xFE10, 0xFE11,
+            0xFE50, 0xFE51,
+            0xFF0C, 0xFF0C,
+            0xFF64, 0xFF64).freeze();
+
+//    private static final UnicodeSet otherGroupingSeparators = new UnicodeSet(
+//            //"[\\ '\u00A0\u066C\u2000-\u200A\u2018\u2019\u202F\u205F\u3000\uFF07]"
+//            0x0020, 0x0020,
+//            0x0027, 0x0027,
+//            0x00A0, 0x00A0,
+//            0x066C, 0x066C,
+//            0x2000, 0x200A,
+//            0x2018, 0x2019,
+//            0x202F, 0x202F,
+//            0x205F, 0x205F,
+//            0x3000, 0x3000,
+//            0xFF07, 0xFF07).freeze();
+
+    private static final UnicodeSet strictDotEquivalents = new UnicodeSet(
+            //"[.\u2024\uFE52\uFF0E\uFF61]"
+            0x002E, 0x002E,
+            0x2024, 0x2024,
+            0xFE52, 0xFE52,
+            0xFF0E, 0xFF0E,
+            0xFF61, 0xFF61).freeze();
+
+    private static final UnicodeSet strictCommaEquivalents = new UnicodeSet(
+            //"[,\u066B\uFE10\uFE50\uFF0C]"
+            0x002C, 0x002C,
+            0x066B, 0x066B,
+            0xFE10, 0xFE10,
+            0xFE50, 0xFE50,
+            0xFF0C, 0xFF0C).freeze();
+
+//    private static final UnicodeSet strictOtherGroupingSeparators = new UnicodeSet(
+//            //"[\\ '\u00A0\u066C\u2000-\u200A\u2018\u2019\u202F\u205F\u3000\uFF07]"
+//            0x0020, 0x0020,
+//            0x0027, 0x0027,
+//            0x00A0, 0x00A0,
+//            0x066C, 0x066C,
+//            0x2000, 0x200A,
+//            0x2018, 0x2019,
+//            0x202F, 0x202F,
+//            0x205F, 0x205F,
+//            0x3000, 0x3000,
+//            0xFF07, 0xFF07).freeze();
+
+    private static final UnicodeSet defaultGroupingSeparators =
+        //new UnicodeSet(dotEquivalents).addAll(commaEquivalents).addAll(otherGroupingSeparators).freeze();
+        new UnicodeSet(
+                0x0020, 0x0020,
+                0x0027, 0x0027,
+                0x002C, 0x002C,
+                0x002E, 0x002E,
+                0x00A0, 0x00A0,
+                0x060C, 0x060C,
+                0x066B, 0x066C,
+                0x2000, 0x200A,
+                0x2018, 0x2019,
+                0x2024, 0x2024,
+                0x202F, 0x202F,
+                0x205F, 0x205F,
+                0x3000, 0x3002,
+                0xFE10, 0xFE12,
+                0xFE50, 0xFE52,
+                0xFF07, 0xFF07,
+                0xFF0C, 0xFF0C,
+                0xFF0E, 0xFF0E,
+                0xFF61, 0xFF61,
+                0xFF64, 0xFF64).freeze();
+
+    private static final UnicodeSet strictDefaultGroupingSeparators =
+        //new UnicodeSet(strictDotEquivalents).addAll(strictCommaEquivalents).addAll(strictOtherGroupingSeparators).freeze();
+        new UnicodeSet(
+                0x0020, 0x0020,
+                0x0027, 0x0027,
+                0x002C, 0x002C,
+                0x002E, 0x002E,
+                0x00A0, 0x00A0,
+                0x066B, 0x066C,
+                0x2000, 0x200A,
+                0x2018, 0x2019,
+                0x2024, 0x2024,
+                0x202F, 0x202F,
+                0x205F, 0x205F,
+                0x3000, 0x3000,
+                0xFE10, 0xFE10,
+                0xFE50, 0xFE50,
+                0xFE52, 0xFE52,
+                0xFF07, 0xFF07,
+                0xFF0C, 0xFF0C,
+                0xFF0E, 0xFF0E,
+                0xFF61, 0xFF61).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
+     * @param type
+     *            type of currency to parse against, LONG_NAME only or not.
+     */
+    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 type) {
+        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, type, currency);
+        int negMatch = compareAffix(text, position, true, true, negPrefix, type, 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?
+            int lastGroup = -1; // where did we last see a grouping separator?
+            int gs2 = groupingSize2 == 0 ? groupingSize : groupingSize2;
+
+            // Strict parsing leading zeroes. If a leading zero would
+            // be forced by the pattern, then don't fail strict parsing.
+            boolean strictLeadingZero = false;
+            int leadingZeroPos = 0;
+            int leadingZeroCount = 0;
+
+            // 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
+                                // Count leading zeros for checking later
+                                if (!strictLeadingZero)
+                                    leadingZeroPos = position + 1;
+                                strictLeadingZero = true;
+                                ++leadingZeroCount;
+                            }
+                            // 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 (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;
+
+                    // 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 there was no decimal point we have an integer
+            if (!sawDecimal)
+                digits.decimalAt = digitCount; // Not digits.count!
+
+            // check for strict parse errors
+            if (strictParse && strictLeadingZero) {
+                if ((leadingZeroCount + digits.decimalAt) > this.getMinimumIntegerDigits()) {
+                    parsePosition.setIndex(oldStart);
+                    parsePosition.setErrorIndex(leadingZeroPos);
+                    return false;
+                }
+            }
+            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;
+            }
+
+            // 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, type, currency);
+        }
+        if (negMatch >= 0) {
+            negMatch = compareAffix(text, position, true, false, negSuffix, type, 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 type compare against currency type, LONG_NAME only or not.
+     * 
+     * @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, int type,
+            Currency[] currency) {
+        if (currency != null || currencyChoice != null || currencySignCount > 0) {
+            return compareComplexAffix(affixPat, text, pos, type, 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
+                // and input text like: \u200F
+                // 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 type parse against currency type, LONG_NAME only or not.
+     * 
+     * @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, int type, Currency[] currency) {
+        int start = pos;
+        for (int i = 0; i < affixPat.length() && pos >= 0;) {
+            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, type, 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 (pos >= text.length()) {
+            return -1;
+        }
+        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 = skipRuleWhiteSpace(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;
+    }
+
+    /**
+     * 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
+     */
+    public java.math.BigDecimal getRoundingIncrement() {
+        if (roundingIncrementICU == null)
+            return null;
+        return roundingIncrementICU.toBigDecimal();
+    }
+
+    /**
+     * 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));
+        }
+    }
+
+    /**
+     * 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();
+    }
+
+    /**
+     * 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()));
+        }
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * Returns the MathContext used by this format.
+     * 
+     * @return desired MathContext
+     * @see #getMathContext
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public MathContext getMathContextICU() {
+        return mathContext;
+    }
+
+    /**
+     * Returns the MathContext used by this format.
+     * 
+     * @return desired MathContext
+     * @see #getMathContext
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public java.math.MathContext getMathContext() {
+        try {
+            // don't allow multiple references
+            return mathContext == null ? null : new java.math.MathContext(mathContext.getDigits(),
+                    java.math.RoundingMode.valueOf(mathContext.getRoundingMode()));
+        } catch (Exception foo) {
+            return null; // should never happen
+        }
+    }
+
+    /**
+     * Sets the MathContext used by this format.
+     * 
+     * @param newValue desired MathContext
+     * @see #getMathContext
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setMathContextICU(MathContext newValue) {
+        mathContext = newValue;
+    }
+
+    /**
+     * Sets the MathContext used by this format.
+     * 
+     * @param newValue desired MathContext
+     * @see #getMathContext
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public void setMathContext(java.math.MathContext newValue) {
+        mathContext = new MathContext(newValue.getPrecision(), MathContext.SCIENTIFIC, false, (newValue
+                .getRoundingMode()).ordinal());
+    }
+
+    /**
+     * 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 || equals(posPrefixPattern, other.posPrefixPattern)
+                        && equals(posSuffixPattern, other.posSuffixPattern)
+                        && equals(negPrefixPattern, other.negPrefixPattern)
+                        && 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)
+                && Utility.objectEquals(currencyPluralInfo, other.currencyPluralInfo);
+    }
+
+    // method to unquote the strings and compare
+    private boolean equals(String pat1, String pat2) {
+        if (pat1 == null || pat2 == null) {
+            return (pat1 == null && pat2 == null);
+        }
+        // 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.
+     */
+    // 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;
+        }
+        // [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());
+        }
+        buf.append(affix);
+        return affix.length();
+    }
+
+    /*
+     * [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);
+        }
+    }
+
+    /*
+     * [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);
+    }
+
+    /**
+     * Format the object to an attributed string, and return the corresponding iterator Overrides superclass method.
+     * 
+     * @stable ICU 3.6
+     */
+    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 = attributes.get(i);
+            Format.Field attribute = pos.getFieldAttribute();
+            as.addAttribute(attribute, attribute, pos.getBeginIndex(), pos.getEndIndex());
+        }
+
+        // return the CharacterIterator from AttributedString
+        return as.getIterator();
+    }
+
+    /**
+     * 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;
+    }
+
+    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();
+    }
+
+    /**
+     * 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 (roundingIncrement != null) {
+            setInternalRoundingIncrement(new BigDecimal(roundingIncrement));
+            setRoundingDouble();
+        }
+    }
+
+    private void setInternalRoundingIncrement(BigDecimal value) {
+        roundingIncrementICU = value;
+        roundingIncrement = value == null ? null : value.toBigDecimal();
+    }
+
+    // ----------------------------------------------------------------------
+    // 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
+
+    /**
+     * 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
+
+    /**
+     * 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;
+
+    /**
+     * 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;
+
+    /**
+     * 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;
+
+    /**
+     * 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;
+
+    /**
+     * 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;
+
+    /**
+     * 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;
+
+    /**
+     * 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 MathContext mathContext = new MathContext(0, MathContext.PLAIN); // context for plain unlimited math
+
+    /**
+     * 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;
+
+    /**
+     * 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 = ' ';
+
+    /**
+     * 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
+    // ----------------------------------------------------------------------
+
+    /**
+     * 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;
+
+    /**
+     * 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;
+
+    /**
+     * 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;
+
+    /**
+     * 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';
+    static final char PATTERN_PLUS_SIGN = '+';
+
+    // Affix
+    private static final char PATTERN_PER_MILLE = '\u2030';
+    private static final char PATTERN_PERCENT = '%';
+    static final char PATTERN_PAD_ESCAPE = '*';
+    /*
+     * Bug 4212072 To meet the need of expandAffix(String, StirngBuffer) [Richard/GCL]
+     */
+    private static final char PATTERN_MINUS = '-';
+
+    // 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;
+
+    // Proclaim JDK 1.1 serial compatibility.
+    private static final long serialVersionUID = 864413376551465018L;
+
+    private ArrayList<FieldPosition> attributes = new ArrayList<FieldPosition>();
+
+    /*
+     * 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;
+        private int patternType;
+
+        public AffixForCurrency(String negPrefix, String negSuffix, String posPrefix, String posSuffix, int type) {
+            negPrefixPatternForCurrency = negPrefix;
+            negSuffixPatternForCurrency = negSuffix;
+            posPrefixPatternForCurrency = posPrefix;
+            posSuffixPatternForCurrency = posSuffix;
+            patternType = type;
+        }
+
+        public String getNegPrefix() {
+            return negPrefixPatternForCurrency;
+        }
+
+        public String getNegSuffix() {
+            return negSuffixPatternForCurrency;
+        }
+
+        public String getPosPrefix() {
+            return posPrefixPatternForCurrency;
+        }
+
+        public String getPosSuffix() {
+            return posSuffixPatternForCurrency;
+        }
+
+        public int getPatternType() {
+            return patternType;
+        }
+    }
+
+    // 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<AffixForCurrency> 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/main/classes/core/src/com/ibm/icu/text/DecimalFormatSymbols.java b/main/classes/core/src/com/ibm/icu/text/DecimalFormatSymbols.java
new file mode 100644
index 0000000..a2d93a6
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/DecimalFormatSymbols.java
@@ -0,0 +1,1204 @@
+/*
+ *******************************************************************************
+ * 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.io.Serializable;
+import java.text.ChoiceFormat;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+/**
+ * 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.
+     * @stable ICU 3.8
+     */
+    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();
+    }
+
+    /**
+     * 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.
+     * @stable ICU 3.8 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ULocale[] getAvailableULocales() {
+        return ICUResourceBundle.getAvailableULocales();
+    }
+
+    
+    /**
+     * 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;
+    }
+    
+    public static final int CURRENCY_SPC_CURRENCY_MATCH = 0;
+    public static final int CURRENCT_SPC_SURROUNDING_MATCH = 1;
+    public static final int CURRENCY_SPC_INSERT = 2;
+
+    private static final String CURRENCY_SPACING = "currencySpacing";
+    private static final String BEFORE_CURRENCY = "beforeCurrency";
+    private static final String AFTER_CURRENCY = "afterCurrency";
+    private static final String[] CURRENCY_SPACING_KEYS = 
+        { "currencyMatch", "surroundingMatch" ,"insertBetween"};
+    private static final String DEFAULT_SPC_MATCH = "[:letter:]";
+    private static final String DEFAULT_SPC_INSERT = " ";
+    private static final String DEFAULT_SPC_SUR_MATCH = "[:digit:]";
+
+    private String[] currencySpcBeforeSym; // before currency symbol.
+    private String[] currencySpcAfterSym; // after currency symbol.
+    /**
+     * Get pattern string for 'CurrencySpacing' that can be applied to
+     * currency format.
+     * This API gets the CurrencySpacing data from ResourceBundle. The pattern can
+     * be null if there is no data from current locale and its parent locales.
+     *
+     * @param itemType : CURRENCY_SPC_CURRENCY_MATCH, CURRENCY_SPC_SURROUNDING_MATCH
+     *                   or CURRENCY_SPC_INSERT
+     * @param beforeCurrency : true if the pattern is for before currency symbol.
+     *                         false if the pattern is for after currency symbol.
+     * @return  pattern string for currencyMatch, surroundingMatch or spaceInsert.
+     *     Return null of there is no data for this locale and its parent locales.
+     */
+    public String getPatternForCurrencySpacing(int itemType, boolean beforeCurrency)  {
+        if (itemType < CURRENCY_SPC_CURRENCY_MATCH ||
+            itemType > CURRENCY_SPC_INSERT ) {
+            return null;  // invalid itemType.
+        }
+        if (beforeCurrency) {
+            return currencySpcBeforeSym[itemType];
+        } else {
+            return currencySpcAfterSym[itemType];
+        }
+    }
+
+    
+    /**
+     * Set pattern string for 'CurrencySpacing' that can be applied to
+     * CurrencyFormat.
+     * 
+     * @param itemType : CURRENCY_SPC_CURRENCY_MATCH, CURRENCY_SPC_SURROUNDING_MATCH
+     *                   or CURRENCY_SPC_INSERT
+     * @param beforeCurrency : true if the pattern is for before currency symbol.
+     *                         false if the pattern is for after currency symbol.
+     * @param  pattern string to override current setting.
+     */
+    public void setPatternForCurrencySpacing(int itemType, boolean beforeCurrency, String pattern) {
+
+        if (itemType < CURRENCY_SPC_CURRENCY_MATCH ||
+            itemType > CURRENCY_SPC_INSERT ) {
+            return;  // invalid itemType.
+        }
+        if (beforeCurrency) {
+            currencySpcBeforeSym[itemType] = pattern;
+        } else {
+            currencySpcAfterSym[itemType] = pattern;
+        }
+    }
+    
+    /**
+     * 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;
+        for (int i = 0; i <= CURRENCY_SPC_INSERT; i++) {
+            if (!currencySpcBeforeSym[i].equals(other.currencySpcBeforeSym[i])) {
+                return false;
+            }
+            if (!currencySpcAfterSym[i].equals(other.currencySpcAfterSym[i])) {
+                return false;
+            }
+        }
+
+        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 = 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;
+        
+        // Attempt to set the zero digit based on the numbering system for the locale requested
+        //
+        NumberingSystem ns = NumberingSystem.getInstance(locale);
+        if ( ns != null && ns.getRadix() == 10 && !ns.isAlgorithmic()) {
+            zeroDigit = ns.getDescription().charAt(0);
+        }
+
+        // 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);
+        
+        // Get Currency Spacing data. 
+        currencySpcBeforeSym = new String[CURRENCY_SPC_INSERT+1];
+        currencySpcAfterSym = new String[CURRENCY_SPC_INSERT+1];
+        ICUResourceBundle curSpcBundle = (ICUResourceBundle)r.get(CURRENCY_SPACING);
+        if (curSpcBundle != null) {
+            ICUResourceBundle beforeCurBundle = (ICUResourceBundle)curSpcBundle.get(BEFORE_CURRENCY);
+            ICUResourceBundle afterCurBundle = (ICUResourceBundle)curSpcBundle.get(AFTER_CURRENCY);
+            for (int i = CURRENCY_SPC_CURRENCY_MATCH; i <= CURRENCY_SPC_INSERT; i++) {
+                currencySpcBeforeSym[i] = beforeCurBundle.getStringWithFallback(CURRENCY_SPACING_KEYS[i]);
+                currencySpcAfterSym[i] = afterCurBundle.getStringWithFallback(CURRENCY_SPACING_KEYS[i]);
+            }
+        }
+        
+    }
+
+    /**
+     * 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;
+        }
+        if (serialVersionOnStream < 6) {
+            // Set null to CurrencySpacing related fields.
+            if (currencySpcBeforeSym == null) {
+                currencySpcBeforeSym = new String[CURRENCY_SPC_INSERT+1];
+            }
+            if (currencySpcAfterSym == null) {
+                currencySpcAfterSym = new String[CURRENCY_SPC_INSERT+1];
+            }
+            currencySpcBeforeSym[CURRENCY_SPC_CURRENCY_MATCH] = 
+                currencySpcAfterSym[CURRENCY_SPC_CURRENCY_MATCH] = DEFAULT_SPC_MATCH;
+            currencySpcBeforeSym[CURRENCT_SPC_SURROUNDING_MATCH] = 
+                currencySpcAfterSym[CURRENCT_SPC_SURROUNDING_MATCH] = DEFAULT_SPC_SUR_MATCH;
+            currencySpcBeforeSym[CURRENCY_SPC_INSERT] = 
+                currencySpcAfterSym[CURRENCY_SPC_INSERT] = DEFAULT_SPC_INSERT;
+        }
+        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
+    // - 6 for ICU 4.2, which includes the currencySpc* fields
+    private static final int currentSerialVersion = 6;
+    
+    /**
+     * 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<ULocale, String[][]> cachedLocaleData = new Hashtable<ULocale, String[][]>(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/main/classes/core/src/com/ibm/icu/text/DecompData.java b/main/classes/core/src/com/ibm/icu/text/DecompData.java
new file mode 100644
index 0000000..6ab7c47
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/DictionaryBasedBreakIterator.java b/main/classes/core/src/com/ibm/icu/text/DictionaryBasedBreakIterator.java
new file mode 100644
index 0000000..c3c630e
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/DictionaryBasedBreakIterator.java
@@ -0,0 +1,563 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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];
+        }
+        ///CLOVER:OFF
+        Assert.assrt(false);
+        return -9999;   // SHOULD NEVER GET HERE!
+        ///CLOVER:ON
+    }
+
+    /**
+     * 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.
+     */
+    @SuppressWarnings("unchecked")
+    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<Integer> currentBreakPositions = new Stack<Integer>();
+        Stack<Integer> possibleBreakPositions = new Stack<Integer>();
+        Vector<Integer> wrongBreakPositions = new Vector<Integer>();
+
+        // 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<Integer> 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(Integer.valueOf(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(Integer.valueOf(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<Integer>)(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
+                                || currentBreakPositions.peek().intValue() != text.getIndex())
+                                && text.getIndex() != startPos) {
+                            currentBreakPositions.push(Integer.valueOf(text.getIndex()));
+                        }
+                        CINext32(text);
+                        currentBreakPositions.push(Integer.valueOf(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 = possibleBreakPositions.pop();
+                    Integer temp2 = null;
+                    while (!currentBreakPositions.isEmpty() && temp.intValue() <
+                           currentBreakPositions.peek().intValue()) {
+                        temp2 = currentBreakPositions.pop();
+                        wrongBreakPositions.addElement(temp2);
+                    }
+                    currentBreakPositions.push(temp);
+                    text.setIndex(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(Integer.valueOf(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] = currentBreakPositions.elementAt(i).intValue();
+        }
+        positionInCache = 0;
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/text/DigitList.java b/main/classes/core/src/com/ibm/icu/text/DigitList.java
new file mode 100644
index 0000000..4f1ceee
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/DigitList.java
@@ -0,0 +1,862 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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);
+        //Eclipse stated the following is "dead code"
+        /*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();
+    }
+
+    /**
+     * 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>
+     */
+    ///CLOVER:OFF
+    // The method is in a protected class and is not called by anything
+    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));
+        }
+    }
+    ///CLOVER:ON
+
+    /**
+     * 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);
+    }
+
+    /**
+     * 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);
+    }
+
+    /*
+     * 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/main/classes/core/src/com/ibm/icu/text/DurationFormat.java b/main/classes/core/src/com/ibm/icu/text/DurationFormat.java
new file mode 100644
index 0000000..776d7e6
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/DurationFormat.java
@@ -0,0 +1,114 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2009, 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".
+ * 
+ * @stable ICU 3.8
+ */
+public abstract class DurationFormat extends UFormat {
+
+    private static final long serialVersionUID = -2076961954727774282L;
+
+    /**
+     * Construct a duration format for the specified locale
+     * @stable ICU 3.8
+     */
+    public static DurationFormat getInstance(ULocale locale) {
+        return 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
+     * @stable ICU 3.8
+     */
+    public abstract StringBuffer format(Object object, StringBuffer toAppend,
+            FieldPosition pos);
+
+    /**
+     * DurationFormat cannot parse, by default. This method will throw an UnsupportedOperationException.
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    public abstract String formatDurationFrom(long duration, long referenceDate);
+}
diff --git a/main/classes/core/src/com/ibm/icu/text/Formatter.java b/main/classes/core/src/com/ibm/icu/text/Formatter.java
new file mode 100644
index 0000000..9b8fa24
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/Formatter.java
@@ -0,0 +1,50 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.text.FieldPosition;
+
+/**
+ * General Interface for formatting.
+ * @author markdavis
+ */
+public interface Formatter<T, U extends Appendable> {
+    /**
+     * Formats an object to produce a string. This is equivalent to
+     * <blockquote>
+     * {@link #format(Object, Appendable, FieldPosition)}<code>(obj,
+     *         new StringBuilder(), new FieldPosition(0)).toString();</code>
+     * </blockquote>
+     * 
+     * @param obj    The object to format
+     * @return       Formatted string.
+     * @exception IllegalArgumentException if the Format cannot format the given
+     *            object
+     * @draft ICU 4.4
+     */
+    public String format (T obj);
+
+    /**
+     * Formats an object and appends the resulting text to a given {@link java.lang.Appendable}.
+     * If the <code>pos</code> argument identifies a field used by the format,
+     * then its indices are set to the beginning and end of the first such
+     * field encountered.
+     *
+     * @param obj    The object to format
+     * @param toAppendTo    where the text is to be appended
+     * @param pos    A <code>FieldPosition</code> identifying a field
+     *               in the formatted text
+     * @return       the {@link java.lang.Appendable} passed in as <code>toAppendTo</code>,
+     *               with formatted text appended
+     * @exception NullPointerException if <code>toAppendTo</code> or
+     *            <code>pos</code> is null
+     * @exception IllegalArgumentException if the Format cannot format the given
+     *            object. If the Appendable throws an exception, then the cause is that exception.
+     * @draft ICU 4.4
+     */
+    public U format(T obj, U toAppendTo, FieldPosition pos);
+}
diff --git a/main/classes/core/src/com/ibm/icu/text/IDNA.java b/main/classes/core/src/com/ibm/icu/text/IDNA.java
new file mode 100644
index 0000000..37f90b3
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/IDNA.java
@@ -0,0 +1,948 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.impl.Punycode;
+
+/**
+ *
+ * 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(){
+        namePrep = StringPrep.getInstance(StringPrep.RFC3491_NAMEPREP);
+    }
+    
+    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 
+     *                              StringPrepParseException.
+     *
+     *  - 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 StringPrepParseException When an error occurs for parsing a string.
+     * @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
+     * @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
+     * @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
+     * @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
+     * @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
+     * @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
+     * @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
+     * @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
+     * @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
+     * @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
+     * @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
+     * @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
+     * @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
+     * @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
+     * @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/main/classes/core/src/com/ibm/icu/text/MeasureFormat.java b/main/classes/core/src/com/ibm/icu/text/MeasureFormat.java
new file mode 100644
index 0000000..2474546
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/MessageFormat.java b/main/classes/core/src/com/ibm/icu/text/MessageFormat.java
new file mode 100644
index 0000000..db38113
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/MessageFormat.java
@@ -0,0 +1,2303 @@
+/*
+**********************************************************************
+* Copyright (c) 2004-2009, 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.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.text.CharacterIterator;
+import java.text.ChoiceFormat;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.text.AttributedCharacterIterator.Attribute;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+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 implements BaseFormat<Object,StringBuffer,String> {
+
+    // 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
+     */
+    @SuppressWarnings("fallthrough")
+    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<String, Format> newFormats) {
+        for (int i = 0; i <= maxOffset; i++) {
+            if (newFormats.containsKey(argumentNames[i])) {
+                Format f = 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;
+    }
+    
+    /**
+     * Get the format argument names. For more details, see {@link #setFormatByArgumentName(String, Format)}.
+     * @return List of names
+     * @deprecated This API is ICU internal only.
+     * @internal
+     */
+    public Set<String> getFormatArgumentNames() {
+        Set<String> result = new HashSet<String>();
+        for (int i = 0; i <= maxOffset; ++i) {
+            result.add(argumentNames[i]);
+        }
+        return result;
+    }
+    
+    /**
+     * Get the formats according to their argument names. For more details, see {@link #setFormatByArgumentName(String, Format)}.
+     * @return format associated with the name, or null if there isn't one.
+     * @deprecated This API is ICU internal only.
+     * @internal
+     */
+    public Format getFormatByArgumentName(String argumentName) {
+        for (int i = 0; i <= maxOffset; ++i) {
+            if (argumentName.equals(argumentNames[i])) {
+                return formats[i];
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 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<String, Object> 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<String, Object> 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
+     */
+    @SuppressWarnings("unchecked")
+    public final StringBuffer format(Object arguments, StringBuffer result,
+                                     FieldPosition pos)
+    {
+        if ((arguments == null || arguments instanceof Map)) {
+            return subformat((Map<String, Object>)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);
+        }
+    }
+
+    /**
+     * 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
+     */
+    @SuppressWarnings("unchecked")
+    public AttributedCharacterIterator formatToCharacterIterator(Object arguments) {
+        StringBuffer result = new StringBuffer();
+        ArrayList<AttributedCharacterIterator> iterators = new ArrayList<AttributedCharacterIterator>();
+
+        if (arguments == null) {
+            throw new NullPointerException(
+                   "formatToCharacterIterator must be passed non-null object");
+        }
+        if (arguments instanceof Map) {
+            subformat((Map<String, Object>)arguments, result, null, iterators);
+        } else {
+            subformat((Object[]) arguments, result, null, iterators);
+        }
+        if (iterators.size() == 0) {
+            return _createAttributedCharacterIterator("");
+        }
+        return _createAttributedCharacterIterator(
+                     iterators.toArray(new AttributedCharacterIterator[iterators.size()]));
+    }
+
+    /**
+     * 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<String, Object> 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];
+        for (String key : objectMap.keySet()) {
+            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<String, Object> parseToMap(String source, ParsePosition pos) {
+        if (source == null) {
+            Map<String, Object> empty = new HashMap<String, Object>();
+            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<String, Object> resultMap = new HashMap<String, Object>();
+
+        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<String, Object> parseToMap(String source) throws ParseException {
+
+        ParsePosition pos = new ParsePosition(0);
+        Map<String, Object> 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 = 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 = offsets.clone();
+        other.argumentNames = 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
+    }
+
+    /**
+     * 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");
+
+    }
+
+    // ===========================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<AttributedCharacterIterator> 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<String, Object> arguments, StringBuffer result,
+                                   FieldPosition fp, List<AttributedCharacterIterator> 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;
+        int last = result.length();
+
+        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);
+            //Eclipse stated the following is "dead code"
+            /*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 (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();
+                }
+            }
+        }
+        result.append(pattern.substring(lastOffset, pattern.length()));
+        if (characterIterators != null && last != result.length()) {
+            characterIterators.add(_createAttributedCharacterIterator(
+                                   result.substring(last)));
+        }
+        return result;
+    }
+
+    /**
+     * 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);
+            }
+        }
+    }
+
+    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<String, Object> arrayToMap(Object[] array) {
+        Map<String, Object> map = new HashMap<String, Object>();
+        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 && !UCharacter.isUnicodeIdentifierStart(argument.charAt(i)) ||
+                    i > 0 &&  !UCharacter.isUnicodeIdentifierPart(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;
+
+    /**
+     * 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;
+            ///CLOVER:OFF
+            default: // Never happens.
+                break;
+            ///CLOVER:ON
+            }
+            buf.append(c);
+        }
+        // End of scan
+        if (state == STATE_SINGLE_QUOTE || state == STATE_IN_QUOTE) {
+            buf.append(SINGLE_QUOTE);
+        }
+        return new String(buf);
+    }
+
+    //
+    // 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<Attribute, Object> map = iterators[i].getAttributes();
+                int len = iterators[i].getRunLimit() - start; // run length
+                if (map.size() > 0) {
+                    for (Map.Entry<Attribute, Object> entry : map.entrySet()) {
+                        as.addAttribute(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();
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/text/NFRule.java b/main/classes/core/src/com/ibm/icu/text/NFRule.java
new file mode 100644
index 0000000..78974aa
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/NFRule.java
@@ -0,0 +1,1348 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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;
+        }
+
+        RbnfLenientScanner scanner = formatter.getLenientScanner();
+        if (scanner != null) {
+          return scanner.prefixLength(str, prefix);
+        }
+
+        // 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
+        RbnfLenientScanner scanner = formatter.getLenientScanner();
+//        if (!formatter.lenientParseEnabled()) {
+        if (scanner == null) {
+            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 {
+            return scanner.findText(str, key, startingAt);
+
+            // //----------------------------------------------------------------
+            // // 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;
+        }
+        RbnfLenientScanner scanner = formatter.getLenientScanner();
+        if (scanner != null) {
+          return scanner.allIgnorable(str);
+        }
+        return false;
+
+        // 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()) {
+          // {dlf}
+        //return false;
+            // 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/main/classes/core/src/com/ibm/icu/text/NFRuleSet.java b/main/classes/core/src/com/ibm/icu/text/NFRuleSet.java
new file mode 100644
index 0000000..b093780
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/NFRuleSet.java
@@ -0,0 +1,793 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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<String> ruleDescriptions = new Vector<String>();
+
+        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<NFRule> tempRules = new Vector<NFRule>();
+
+        // 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(ruleDescriptions.elementAt(i),
+                            this, predecessor, owner);
+
+            if (temp instanceof NFRule) {
+                tempRules.addElement((NFRule)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 = 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("%%");
+    }
+
+    /**
+     * Return true if the rule set can be used for parsing.
+     * @return true if the rule set can be used for parsing.
+     */
+    public boolean isParseable() {
+        //TODO:
+        //  In CLDR 1.7, we have no distinction between
+        //  parseable/unparseable.  Rules which have one of
+        //  3 suffixes below are know as unparseable for now.
+        //  We should add the information in CLDR data.
+        return !(name.endsWith("-prefixpart")
+                || name.endsWith("-postfixpart")
+                || name.endsWith("-postfx"));
+    }
+
+    //-----------------------------------------------------------------------
+    // 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(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 = 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/main/classes/core/src/com/ibm/icu/text/NFSubstitution.java b/main/classes/core/src/com/ibm/icu/text/NFSubstitution.java
new file mode 100644
index 0000000..6bb48b0
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/NFSubstitution.java
@@ -0,0 +1,1867 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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
+            ///CLOVER:OFF
+            // If you look at the call hierarchy of this method, the rule would
+            // never be directly modified by the user and therefore makes the
+            // following pointless unless the user changes the ruleset.
+            if (rule.getBaseValue() == NFRule.NEGATIVE_NUMBER_RULE) {
+                throw new IllegalArgumentException("<< not allowed in negative-number rule");
+            }
+            ///CLOVER:ON
+
+            // 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
+            ///CLOVER:OFF
+            // If you look at the call hierarchy of this method, the rule would
+            // never be directly modified by the user and therefore makes the
+            // following pointless unless the user changes the ruleset.
+            else if (ruleSet.isFractionSet()) {
+                throw new IllegalArgumentException(">> not allowed in fraction rule set");
+            }
+            ///CLOVER:ON
+
+            // 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
+            ///CLOVER:OFF
+            // If you look at the call hierarchy of this method, the rule would
+            // never be directly modified by the user and therefore makes the
+            // following pointless unless the user changes the ruleset.
+        default:
+            throw new IllegalArgumentException("Illegal substitution character");
+            ///CLOVER:ON
+        }
+    }
+
+    /**
+     * 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 that 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 number 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 number 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) {
+                    Number n = rbnf.getDecimalFormat().parse(workText, workPos);
+                    if (n != null) {
+                        digit = n.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/main/classes/core/src/com/ibm/icu/text/Normalizer.java b/main/classes/core/src/com/ibm/icu/text/Normalizer.java
new file mode 100644
index 0000000..6bff0d3
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/Normalizer.java
@@ -0,0 +1,2816 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2009, 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):
+ *
+ * <pre>
+ *      00C1    LATIN CAPITAL LETTER A WITH ACUTE
+ * </pre>
+ *
+ * or as two separate characters (the "decomposed" form):
+ *
+ * <pre>
+ *      0041    LATIN CAPITAL LETTER A
+ *      0301    COMBINING ACUTE ACCENT
+ * </pre>
+ *
+ * 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:
+ *
+ * <pre>
+ *      0066    LATIN SMALL LETTER F
+ *      0066    LATIN SMALL LETTER F
+ *      0069    LATIN SMALL LETTER I
+ * </pre>
+ *
+ * or as the single character
+ *
+ * <pre>
+ *      FB03    LATIN SMALL LIGATURE FFI
+ * </pre>
+ *
+ * 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 com.ibm.icu.text.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 com.ibm.icu.text.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 com.ibm.icu.text.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 com.ibm.icu.text.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 com.ibm.icu.text.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,destLimit - 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}.
+     * @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 If the index passed for the array is invalid.
+     * @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]=(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);
+                }
+                destLength = bufferLength;
+            }
+        } else {
+            destLength = bufferLength;
+        }
+
+    
+        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]=(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 - destStart));
+                }
+                destLength = bufferLength;
+            }
+        } else {
+            destLength = bufferLength;
+        }
+        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(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/main/classes/core/src/com/ibm/icu/text/NumberFormat.java b/main/classes/core/src/com/ibm/icu/text/NumberFormat.java
new file mode 100644
index 0000000..617e0fb
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/NumberFormat.java
@@ -0,0 +1,1799 @@
+/*
+ *******************************************************************************
+ * 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.InvalidObjectException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Collections;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Set;
+import com.ibm.icu.impl.ICUResourceBundle;
+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);
+        } else if (number instanceof java.math.BigDecimal) {
+            return format((java.math.BigDecimal) number, toAppendTo, pos);
+        } 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();
+    }
+    
+    /**
+     * 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();
+    }
+
+    /**
+     * 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();
+    }
+
+    /**
+     * 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();
+    }
+
+    /**
+     * 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);
+    /**
+     * 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); 
+    /**
+     * 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);
+    /**
+     * 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);
+    /**
+     * 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;
+    }
+
+    /**
+     * 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) {
+        ///CLOVER:OFF
+        // Default implementation only -- subclasses should override
+        Number n = parse(text, pos);
+        return n == null ? null : new CurrencyAmount(n, getEffectiveCurrency());
+        ///CLOVER:ON
+    }
+
+    /**
+     * 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);
+    }
+
+    /**
+     * 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);
+    }
+
+    /**
+     * 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);
+    }
+
+    /**
+     * 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
+         */
+        public boolean visible() {
+            return true;
+        }
+
+        /**
+         * 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<String> 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<String> 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<String> 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();
+            }
+            ///CLOVER:OFF
+            catch (MissingResourceException e){
+                throw e;
+            }
+            catch (Exception e) {
+               // 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();
+        }
+        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();
+        } 
+        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)
+     * @stable ICU 4.0
+     */
+    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()
+     * @stable ICU 4.0
+     */
+    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
+    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 = pattern.replace("\u00A4", doubleCurrencyStr);
+        }
+
+        // Get the numbering system
+        NumberingSystem ns = NumberingSystem.getInstance(desiredLocale);
+        if ( ns == null ) {
+            return null;
+        }
+
+        NumberFormat format;
+
+        if ( ns != null && ns.isAlgorithmic()) {
+            String nsDesc;
+            String nsRuleSetGroup;
+            String nsRuleSetName;
+            ULocale nsLoc;
+            int desiredRulesType = RuleBasedNumberFormat.NUMBERING_SYSTEM;
+
+            nsDesc = ns.getDescription();
+            int firstSlash = nsDesc.indexOf("/");
+            int lastSlash = nsDesc.lastIndexOf("/");
+
+            if ( lastSlash > firstSlash ) {
+               String nsLocID = nsDesc.substring(0,firstSlash);
+               nsRuleSetGroup = nsDesc.substring(firstSlash+1,lastSlash);
+               nsRuleSetName = nsDesc.substring(lastSlash+1);
+
+               nsLoc = new ULocale(nsLocID);
+               if ( nsRuleSetGroup.equals("SpelloutRules")) {
+                   desiredRulesType = RuleBasedNumberFormat.SPELLOUT;
+               }
+            } else {
+                nsLoc = desiredLocale;
+                nsRuleSetName = nsDesc;
+            }
+
+            RuleBasedNumberFormat r = new RuleBasedNumberFormat(nsLoc,desiredRulesType);
+            r.setDefaultRuleSet(nsRuleSetName);
+            format = r;
+        } else {
+            DecimalFormat f = 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) {
+                f.setMaximumFractionDigits(0);
+                f.setDecimalSeparatorAlwaysShown(false);
+                f.setParseIntegerOnly(true);
+            }
+            format = f;
+       } 
+        // 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;
+
+    /**
+     * 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.");
+        }
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/text/NumberFormatServiceShim.java b/main/classes/core/src/com/ibm/icu/text/NumberFormatServiceShim.java
new file mode 100644
index 0000000..56d9aab
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/NumberFormatServiceShim.java
@@ -0,0 +1,117 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2009, 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();
+        }
+        return service.getAvailableLocales();
+    }
+
+    ULocale[] getAvailableULocales() {
+        if (service.isDefault()) {
+            return ICUResourceBundle.getAvailableULocales();
+        }
+        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<String> 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/main/classes/core/src/com/ibm/icu/text/NumberingSystem.java b/main/classes/core/src/com/ibm/icu/text/NumberingSystem.java
new file mode 100644
index 0000000..f3d1c25
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/NumberingSystem.java
@@ -0,0 +1,285 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import java.util.ArrayList;
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.UResourceBundleIterator;
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.SimpleCache;
+
+
+/**
+ * <code>NumberingSystem</code> is the base class for all number
+ * systems. This class provides the interface for setting different numbering
+ * system types, whether it be a simple alternate digit system such as 
+ * Thai digits or Devanagari digits, or an algorithmic numbering system such
+ * as Hebrew numbering or Chinese numbering.
+ *
+ * @author       John Emmons
+ * @draft ICU 4.2
+ */
+class NumberingSystem {
+
+    /**
+     * Default constructor.  Returns a numbering system that uses the Western decimal
+     * digits 0 through 9.
+     * @draft ICU 4.2
+     */
+    public NumberingSystem() {
+        radix = 10;
+        algorithmic = false;
+        desc = "0123456789";
+    }
+
+    /**
+     * Factory method for creating a numbering system.
+     * @param radix_in The radix for this numbering system.  ICU currently 
+     * supports only numbering systems whose radix is 10.
+     * @param isAlgorithmic_in Specifies whether the numbering system is algorithmic
+     * (true) or numeric (false).
+     * @param desc_in String used to describe the characteristics of the numbering
+     * system.  For numeric systems, this string contains the digits used by the
+     * numbering system, in order, starting from zero.  For algorithmic numbering
+     * systems, the string contains the name of the RBNF ruleset in the locale's
+     * NumberingSystemRules section that will be used to format numbers using
+     * this numbering system.
+     * @draft ICU 4.2
+     */
+    public static NumberingSystem getInstance(int radix_in, boolean isAlgorithmic_in, String desc_in ) {
+        if ( radix_in < 2 ) {
+            throw new IllegalArgumentException("Invalid radix for numbering system");
+        }
+
+        if ( !isAlgorithmic_in ) {
+            if ( desc_in.length() != radix_in || !isValidDigitString(desc_in)) {
+                throw new IllegalArgumentException("Invalid digit string for numbering system");
+            }
+        }
+        NumberingSystem ns = new NumberingSystem();
+        ns.radix = radix_in;
+        ns.algorithmic = isAlgorithmic_in;
+        ns.desc = desc_in;
+        return ns;
+    }
+
+    /**
+     * Returns the default numbering system for the specified locale.
+     * @draft ICU 4.2
+     */
+    public static NumberingSystem getInstance(Locale inLocale) {
+        return getInstance(ULocale.forLocale(inLocale));
+    }
+
+    /**
+     * Returns the default numbering system for the specified ULocale.
+     * @draft ICU 4.2
+     */
+    public static NumberingSystem getInstance(ULocale locale) {
+
+        NumberingSystem ns;
+        String defaultNumberingSystem;
+        
+        // Check for @numbers
+        String numbersKeyword = locale.getKeywordValue("numbers");
+        if (numbersKeyword != null) {
+            ns = getInstanceByName(numbersKeyword);
+            if ( ns != null ) {
+                return ns;
+            }
+        }
+
+        // Get the numbering system from the cache
+        String baseName = locale.getBaseName();
+        ns = cachedLocaleData.get(baseName);
+        if (ns != null ) {
+            return ns;
+        }
+        
+        // Cache miss, create new instance
+        try {
+            ICUResourceBundle rb = (ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME,locale);
+            defaultNumberingSystem = rb.getString("defaultNumberingSystem");
+        } catch (MissingResourceException ex) {
+            ns = new NumberingSystem();
+            cachedLocaleData.put(baseName, ns);
+            return ns;
+        }
+
+        ns = getInstanceByName(defaultNumberingSystem);
+        if ( ns != null ) {
+           cachedLocaleData.put(baseName, ns);
+           return ns;
+        }
+
+        ns = new NumberingSystem();
+        cachedLocaleData.put(baseName, ns);
+        return ns;        
+        
+    }
+
+    /**
+     * Returns the default numbering system for the default locale.
+     * @draft ICU 4.2
+     */
+    public static NumberingSystem getInstance() {
+        return getInstance(ULocale.getDefault());
+    }
+
+    /**
+     * Returns a numbering system from one of the predefined numbering systems
+     * known to ICU.  Numbering system names are based on the numbering systems
+     * defined in CLDR.  To get a list of available numbering systems, use the
+     * getAvailableNames method.
+     * @param name The name of the desired numbering system.  Numbering system
+     * names often correspond with the name of the script they are associated
+     * with.  For example, "thai" for Thai digits, "hebr" for Hebrew numerals.
+     * @draft ICU 4.2
+     */
+    public static NumberingSystem getInstanceByName(String name) {
+        int radix;
+        boolean isAlgorithmic;
+        String description;
+        
+        // Get the numbering system from the cache
+        NumberingSystem ns = cachedStringData.get(name);
+        if (ns != null ) {
+            return ns;
+        }        
+        
+        try {
+            UResourceBundle numberingSystemsInfo = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "numberingSystems");
+            UResourceBundle nsCurrent = numberingSystemsInfo.get("numberingSystems");
+            UResourceBundle nsTop = nsCurrent.get(name);
+
+            description = nsTop.getString("desc");
+            UResourceBundle nsRadixBundle = nsTop.get("radix");
+            UResourceBundle nsAlgBundle = nsTop.get("algorithmic");
+            radix = nsRadixBundle.getInt();
+            int algorithmic = nsAlgBundle.getInt();
+
+            isAlgorithmic = ( algorithmic == 1 );
+
+        } catch (MissingResourceException ex) {
+            return null;
+        }
+
+        ns = getInstance(radix,isAlgorithmic,description);
+        cachedStringData.put(name, ns);                       
+        return ns;     
+    }
+
+    /**
+     * Returns a string array containing a list of the names of numbering systems
+     * currently known to ICU.
+     * @draft ICU 4.2
+     */
+    public static String [] getAvailableNames() {
+    
+            UResourceBundle numberingSystemsInfo = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "numberingSystems");
+            UResourceBundle nsCurrent = numberingSystemsInfo.get("numberingSystems");
+            UResourceBundle temp;
+
+            String nsName;
+            ArrayList<String> output = new ArrayList<String>();
+            UResourceBundleIterator it = nsCurrent.getIterator();
+            while (it.hasNext()) {
+                temp = it.next();
+                nsName = temp.getKey();
+                output.add(nsName);
+            }
+            return output.toArray(new String[output.size()]);
+    }
+
+    /**
+     * Convenience method to determine if a given digit string is valid for use as a 
+     * descriptor of a numeric ( non-algorithmic ) numbering system.  In order for
+     * a digit string to be valid, it must meet the following criteria:
+     * 1. It must only contain characters that are decimal digits as defined by Unicode.
+     * 2. It must contain characters that are contiguous code points.
+     * 3. Digits must be in Unicode's basic multilingual plane.
+     * @draft ICU 4.2
+     */
+    public static boolean isValidDigitString(String str) {
+
+        int c;
+        int prev = 0;
+        int i = 0;
+        UCharacterIterator it = UCharacterIterator.getInstance(str);
+
+        it.setToStart();
+        while ( (c = it.nextCodePoint()) != UCharacterIterator.DONE) {
+            if ( UCharacter.digit(c) != i ) { // Digits outside the Unicode decimal digit class are not currently supported
+                return false;
+            }
+            if ( prev != 0 && c != prev + 1 ) { // Non-contiguous digits are not currently supported
+                return false;
+            }
+            if ( UCharacter.isSupplementary(c)) { // Digits outside the BMP are not currently supported
+                return false;
+            }
+            i++;
+            prev = c;
+        }
+        return true;
+    }
+
+    /**
+     * Returns the radix of the current numbering system.
+     * @draft ICU 4.2
+     */
+    public int getRadix() {
+        return radix;
+    }
+
+    /**
+     * Returns the description string of the current numbering system.
+     * The description string describes the characteristics of the numbering
+     * system.  For numeric systems, this string contains the digits used by the
+     * numbering system, in order, starting from zero.  For algorithmic numbering
+     * systems, the string contains the name of the RBNF ruleset in the locale's
+     * NumberingSystemRules section that will be used to format numbers using
+     * this numbering system.
+     * @draft ICU 4.2
+     */
+    public String getDescription() {
+        return desc;
+    }
+
+    /**
+     * Returns the numbering system's algorithmic status.  If true,
+     * the numbering system is algorithmic and uses an RBNF formatter to
+     * format numerals.  If false, the numbering system is numeric and
+     * uses a fixed set of digits. 
+     * @draft ICU 4.2
+     */
+    public boolean isAlgorithmic() {
+        return algorithmic;
+    }
+
+    private String desc;
+    private int radix;
+    private boolean algorithmic;
+
+    /**
+     * Cache to hold the NumberingSystems by Locale.
+     */
+    private static ICUCache<String, NumberingSystem> cachedLocaleData = new SimpleCache<String, NumberingSystem>();
+        
+    /**
+     * Cache to hold the NumberingSystems by name.
+     */
+    private static ICUCache<String, NumberingSystem> cachedStringData = new SimpleCache<String, NumberingSystem>();
+    
+}
diff --git a/main/classes/core/src/com/ibm/icu/text/Parser.java b/main/classes/core/src/com/ibm/icu/text/Parser.java
new file mode 100644
index 0000000..73f5239
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/Parser.java
@@ -0,0 +1,50 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, Google, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.text.ParseException;
+import java.text.ParsePosition;
+
+/**
+ * @author markdavis
+ *
+ */
+public interface Parser<T, S extends CharSequence> {
+    /**
+     * Parses text from the beginning of the given string to produce an object.
+     * The method may not use the entire text of the given string.
+     *
+     * @param source A <code>String</code> whose beginning should be parsed.
+     * @return An <code>Object</code> parsed from the string.
+     * @exception ParseException if the beginning of the specified string
+     *            cannot be parsed.
+     */
+    public T parseObject(S source) throws ParseException;
+    
+    /**
+     * Parses text from a string to produce an object.
+     * <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 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.
+     *
+     * @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. In case of
+     *         error, returns null.
+     * @exception NullPointerException if <code>pos</code> is null.
+     */
+    public T parseObject (S source, ParsePosition pos);
+}
diff --git a/main/classes/core/src/com/ibm/icu/text/PluralFormat.java b/main/classes/core/src/com/ibm/icu/text/PluralFormat.java
new file mode 100644
index 0000000..9ed434f
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/PluralFormat.java
@@ -0,0 +1,645 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2009, 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.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * <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)
+ * @stable ICU 3.8
+ */
+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<String, String> 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.
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 3.8
+     */
+    public void applyPattern(String pttrn) {
+        pttrn = pttrn.trim();
+
+        this.pattern = pttrn;
+        int braceStack = 0;
+        Set<String> ruleNames = pluralRules.getKeywords();
+        parsedValues = new HashMap<String, String>();
+
+        // 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.
+     * @stable ICU 4.0
+     */
+    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 = parsedValues.get(selectedRule);
+        if (selectedPattern == null) { // Fallback to others.
+            selectedPattern = 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
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 3.8
+     */
+    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}
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    public boolean equals(PluralFormat rhs) {
+      return pluralRules.equals(rhs.pluralRules) &&
+          parsedValues.equals(rhs.parsedValues) &&
+          numberFormat.equals(rhs.numberFormat);
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public int hashCode() {
+        return pluralRules.hashCode() ^ parsedValues.hashCode();
+    }
+
+    /**
+     * For debugging purposes only
+     * @return a text representation of the format data.
+     * @stable ICU 3.8
+     */
+    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/main/classes/core/src/com/ibm/icu/text/PluralRules.java b/main/classes/core/src/com/ibm/icu/text/PluralRules.java
new file mode 100644
index 0000000..e86905b
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/PluralRules.java
@@ -0,0 +1,815 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2009, 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>
+ * @stable ICU 3.8
+ */
+public class PluralRules implements Serializable {
+    private static final long serialVersionUID = 1;
+
+    private final RuleList rules;
+    private final Set<String> keywords;
+    private int repeatLimit; // for equality test
+
+    // Standard keywords.
+
+    /** 
+     * Common name for the 'zero' plural form. 
+     * @stable ICU 3.8 
+     */
+    public static final String KEYWORD_ZERO = "zero";
+
+    /** 
+     * Common name for the 'singular' plural form. 
+     * @stable ICU 3.8
+     */
+    public static final String KEYWORD_ONE = "one";
+
+    /**
+     * Common name for the 'dual' plural form.
+     * @stable ICU 3.8
+     */
+    public static final String KEYWORD_TWO = "two";
+
+    /**
+     * Common name for the 'paucal' or other special plural form.
+     * @stable ICU 3.8
+     */
+    public static final String KEYWORD_FEW = "few";
+
+    /**
+     * Common name for the arabic (11 to 99) plural form.
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 3.8
+     */
+    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}.
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 3.8
+     */
+    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
+     * @stable ICU 3.8
+     */
+    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<String> 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;
+        }
+
+        @SuppressWarnings("unused")
+        public Rule and(Constraint c) {
+            return new ConstrainedRule(keyword, new AndConstraint(constraint, c));
+        }
+
+        @SuppressWarnings("unused")
+        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<String> getKeywords() {
+            Set<String> result = new HashSet<String>();
+            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.
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 4.0
+     */
+     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.
+     * @stable ICU 3.8
+     */
+    public Set<String> 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}
+     * @stable ICU 3.8
+     */
+    public String toString() {
+      return "keywords: " + keywords + " rules: " + rules.toString() + 
+          " limit: " + getRepeatLimit();
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public int hashCode() {
+      return keywords.hashCode();
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    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.
+     * @stable ICU 3.8
+     */
+    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/main/classes/core/src/com/ibm/icu/text/Quantifier.java b/main/classes/core/src/com/ibm/icu/text/Quantifier.java
new file mode 100644
index 0000000..7525096
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/Quantifier.java
@@ -0,0 +1,115 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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('{');
+        result.append(Utility.hex(minCount,1));
+        result.append(',');
+        if (maxCount != MAX) {
+            result.append(Utility.hex(maxCount,1));
+        }
+        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/main/classes/core/src/com/ibm/icu/text/RBBIDataWrapper.java b/main/classes/core/src/com/ibm/icu/text/RBBIDataWrapper.java
new file mode 100644
index 0000000..f64c645
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/RBBINode.java b/main/classes/core/src/com/ibm/icu/text/RBBINode.java
new file mode 100644
index 0000000..20c5295
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/RBBINode.java
@@ -0,0 +1,357 @@
+/********************************************************************
+ * COPYRIGHT:
+ * Copyright (c) 2001-2009, International Business Machines Corporation and
+ * others. All Rights Reserved.
+ ********************************************************************/
+
+package com.ibm.icu.text;
+
+import java.util.HashSet;
+import java.util.List;
+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<RBBINode> fFirstPosSet;         // See Aho DFA table generation algorithm
+    Set<RBBINode> fLastPosSet;          // See Aho.       
+    Set<RBBINode> 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<RBBINode>();
+        fLastPosSet = new HashSet<RBBINode>();
+        fFollowPos = new HashSet<RBBINode>();
+        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<RBBINode>(other.fFirstPosSet);
+        fLastPosSet = new HashSet<RBBINode>(other.fLastPosSet);
+        fFollowPos = new HashSet<RBBINode>(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<RBBINode> 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/main/classes/core/src/com/ibm/icu/text/RBBIRuleBuilder.java b/main/classes/core/src/com/ibm/icu/text/RBBIRuleBuilder.java
new file mode 100644
index 0000000..af0c131
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/RBBIRuleBuilder.java
@@ -0,0 +1,334 @@
+//
+//    Copyright (C) 2002-2009, International Business Machines Corporation and others.
+//    All Rights Reserved.
+//
+//
+
+package com.ibm.icu.text;
+
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+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<RBBINode> 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<Set<Integer>, Integer> fStatusSets = new HashMap<Set<Integer>, Integer>(); // Status value sets encountered so far.
+                                                                                   //  Map Key is the set of values.
+                                                                                   //  Map Value is the runtime array index.
+
+    List<Integer> 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<RBBINode>();
+        fRuleStatusVals = new ArrayList<Integer>();
+        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 (Integer val : fRuleStatusVals) {
+            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/main/classes/core/src/com/ibm/icu/text/RBBIRuleParseTable.java b/main/classes/core/src/com/ibm/icu/text/RBBIRuleParseTable.java
new file mode 100644
index 0000000..1a8e953
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/RBBIRuleScanner.java b/main/classes/core/src/com/ibm/icu/text/RBBIRuleScanner.java
new file mode 100644
index 0000000..15f548f
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/RBBIRuleScanner.java
@@ -0,0 +1,1073 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2009, International Business Machines Corporation and others. All Rights Reserved.
+ *******************************************************************************
+ */
+ 
+package com.ibm.icu.text;
+
+import java.text.ParsePosition;
+import java.util.HashMap;
+
+import com.ibm.icu.impl.Assert;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+
+/**
+  *  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<String, RBBISetTableEl> fSetTable = new HashMap<String, RBBISetTableEl>(); // 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 = 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 == -1 || // EOF
+                        c.fChar == '\r' ||
+                        c.fChar == '\n' ||
+                        c.fChar == chNEL ||
+                        c.fChar == chLS)
+                    {
+                        break;
+                    }
+                }
+            }
+            if (c.fChar == -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 == -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 != -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/main/classes/core/src/com/ibm/icu/text/RBBISetBuilder.java b/main/classes/core/src/com/ibm/icu/text/RBBISetBuilder.java
new file mode 100644
index 0000000..62e3f3c
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/RBBISetBuilder.java
@@ -0,0 +1,561 @@
+/*
+*******************************************************************************
+* Copyright (C) 2003-2009, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+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<RBBINode>     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<RBBINode>();
+            }
+            
+            RangeDescriptor(RangeDescriptor other) {
+                fStartChar = other.fStartChar;
+                fEndChar   = other.fEndChar;
+                fNum       = other.fNum;
+                fIncludesSets = new ArrayList<RBBINode>(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    = 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() {
+        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
+        //
+        for (RBBINode usetNode : fRB.fUSetNodes) {
+            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";
+
+        for (RBBINode usetNode : fRB.fUSetNodes) {
+            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<RBBINode> sets, int val) {
+        for (RBBINode usetNode : sets) {
+            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 + "   " + rlRange.fStartChar + "-" + rlRange.fEndChar);
+
+            for (i=0; i<rlRange.fIncludesSets.size(); i++) {
+                RBBINode       usetNode    = 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    = 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(tRange.fStartChar, -1);
+                        System.out.print("-");
+                        RBBINode.printHex(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 = 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/main/classes/core/src/com/ibm/icu/text/RBBISymbolTable.java b/main/classes/core/src/com/ibm/icu/text/RBBISymbolTable.java
new file mode 100644
index 0000000..6564945
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/RBBISymbolTable.java
@@ -0,0 +1,201 @@
+/*
+***************************************************************************
+*   Copyright (C) 2002-2009 International Business Machines Corporation   *
+*   and others. All rights reserved.                                      *
+***************************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.text.ParsePosition;
+import java.util.HashMap;
+
+import com.ibm.icu.lang.UCharacter;
+
+class RBBISymbolTable implements SymbolTable{
+    
+    String               fRules;
+    HashMap<String, RBBISymbolTableEntry> 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<String, RBBISymbolTableEntry>();
+        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 = 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 = 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 = 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 = fHashTable.values().toArray(new RBBISymbolTableEntry[0]);
+
+        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/main/classes/core/src/com/ibm/icu/text/RBBITableBuilder.java b/main/classes/core/src/com/ibm/icu/text/RBBITableBuilder.java
new file mode 100644
index 0000000..73c9c4c
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/RBBITableBuilder.java
@@ -0,0 +1,1013 @@
+/*
+**********************************************************************
+*   Copyright (c) 2002-2009, 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.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+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<Integer> fTagVals;
+        int          fTagsIdx;
+        Set<RBBINode> 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<Integer>();
+            fPositions = new HashSet<RBBINode>();
+            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<RBBIStateDescriptor> 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<RBBIStateDescriptor>();
+        }
+
+
+
+ 
+       //-----------------------------------------------------------------------------
+       //
+       //   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) {
+               for (RBBINode i /* is 'i' in Aho's description */ : n.fLeftChild.fLastPosSet) {
+                   i.fFollowPos.addAll(n.fRightChild.fFirstPosSet);
+               }
+           }
+
+           // Aho rule #2
+           if (n.fType == RBBINode.opStar ||
+               n.fType == RBBINode.opPlus) {
+               for (RBBINode i /* again, n and i are the names from Aho's description */ : n.fLastPosSet) {
+                   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<RBBINode> endMarkerNodes = new ArrayList<RBBINode>();
+           List<RBBINode> leafNodes      = new ArrayList<RBBINode>();
+
+            // 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<RBBINode> matchStartNodes = userRuleRoot.fFirstPosSet;
+
+           // Iteratate over all leaf nodes,
+           //
+           for (RBBINode tNode : leafNodes) {
+               RBBINode endNode = null;
+
+               // Identify leaf nodes that correspond to overall rule match positions.
+               //   These include an endMarkerNode in their followPos sets.
+               for (RBBINode endMarkerNode : endMarkerNodes) {
+                   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.
+               for (RBBINode startNode : matchStartNodes) {
+                   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<RBBINode> matchStartNodes = fRB.fTreeRoots[fRootIx].fLeftChild.fRightChild.fFirstPosSet;
+           for (RBBINode startNode : matchStartNodes) {
+               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  = 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<RBBINode> U = null;
+                   for (RBBINode p : T.fPositions) {
+                       if ((p.fType == RBBINode.leafChar) &&  (p.fVal == a)) {
+                           if (U == null) {
+                               U = new HashSet<RBBINode>();
+                           }
+                           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 = 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<RBBINode> endMarkerNodes = new ArrayList<RBBINode>();
+           RBBINode    endMarker;
+           int     i;
+           int     n;
+
+           fRB.fTreeRoots[fRootIx].findNodes(endMarkerNodes, RBBINode.endMark);
+
+           for (i=0; i<endMarkerNodes.size(); i++) {
+               endMarker = endMarkerNodes.get(i);
+               for (n=0; n<fDStates.size(); n++) {
+                   RBBIStateDescriptor sd = 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<RBBINode> lookAheadNodes = new ArrayList<RBBINode>();
+           RBBINode    lookAheadNode;
+           int     i;
+           int     n;
+
+           fRB.fTreeRoots[fRootIx].findNodes(lookAheadNodes, RBBINode.lookAhead);
+           for (i=0; i<lookAheadNodes.size(); i++) {
+               lookAheadNode = lookAheadNodes.get(i);
+
+               for (n=0; n<fDStates.size(); n++) {
+                   RBBIStateDescriptor sd = fDStates.get(n);
+                   if (sd.fPositions.contains(lookAheadNode)) {
+                       sd.fLookAhead = lookAheadNode.fVal;
+                   }
+               }
+           }
+       }
+
+
+
+
+       //-----------------------------------------------------------------------------
+       //
+       //    flagTaggedStates
+       //
+       //-----------------------------------------------------------------------------
+       void     flagTaggedStates() {
+           List<RBBINode> tagNodes = new ArrayList<RBBINode>();
+           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 = tagNodes.get(i);
+
+               for (n=0; n<fDStates.size(); n++) {              //    For each state  s (row in the state table)
+                   RBBIStateDescriptor sd = fDStates.get(n);
+                   if (sd.fPositions.contains(tagNode)) {       //       if  s include the tag node t
+                       sd.fTagVals.add(Integer.valueOf(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(Integer.valueOf(1));    // Num of statuses in group
+               fRB.fRuleStatusVals.add(Integer.valueOf(0));    //   and our single status of zero
+               
+               SortedSet<Integer> s0 = new TreeSet<Integer>();
+               Integer izero = Integer.valueOf(0);
+               fRB.fStatusSets.put(s0, izero);
+               SortedSet<Integer> s1 = new TreeSet<Integer>();
+               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 = fDStates.get(n);
+               Set<Integer> statusVals = sd.fTagVals;
+               Integer arrayIndexI = 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 = Integer.valueOf(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(Integer.valueOf(statusVals.size()));
+                   fRB.fRuleStatusVals.addAll(statusVals);
+               }
+               
+               // 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 = 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<RBBINode> s) {
+           for (RBBINode n : s) {
+               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(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 = 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<Integer> tbl = fRB.fRuleStatusVals;
+
+           System.out.print("index |  tags \n");
+           System.out.print("-------------------\n");
+
+           while (nextRecord < tbl.size()) {
+               thisRecord = nextRecord;
+               nextRecord = thisRecord + tbl.get(thisRecord).intValue() + 1;
+               RBBINode.printInt(thisRecord, 7);
+               for (i=thisRecord+1; i<nextRecord; i++) {
+                   int val = tbl.get(i).intValue();
+                   RBBINode.printInt(val, 7);
+               }
+               System.out.print("\n");
+           }
+           System.out.print("\n\n");
+       }
+       
+
+
+}
diff --git a/main/classes/core/src/com/ibm/icu/text/RBNFChinesePostProcessor.java b/main/classes/core/src/com/ibm/icu/text/RBNFChinesePostProcessor.java
new file mode 100644
index 0000000..b201c61
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/RBNFChinesePostProcessor.java
@@ -0,0 +1,159 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+/**
+ * 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
+
+        // Commented by johnvu on the if statement since lastRuleSet is never initialized
+        //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 = buf.indexOf("*"); i != -1; i = buf.indexOf("*", 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 = buf.indexOf(m[i]);
+                if (n != -1) {
+                    buf.insert(n+m[i].length(), '|');
+                }
+            }
+        }
+
+        int x = buf.indexOf(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 = buf.lastIndexOf("|", x);
+            int nn = buf.lastIndexOf(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/main/classes/core/src/com/ibm/icu/text/RBNFPostProcessor.java b/main/classes/core/src/com/ibm/icu/text/RBNFPostProcessor.java
new file mode 100644
index 0000000..d513141
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/RbnfLenientScanner.java b/main/classes/core/src/com/ibm/icu/text/RbnfLenientScanner.java
new file mode 100644
index 0000000..ed15d27
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/RbnfLenientScanner.java
@@ -0,0 +1,41 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+/**
+ * Used by RBNF to leniently parse a string.
+ *
+ * @draft ICU 4.4
+ */
+public interface RbnfLenientScanner {
+  /**
+   * Return true if a string consists entirely of ignorable
+   * characters.
+   * @param s The string to test
+   * @return true if the string is empty or consists entirely of
+   * characters that are ignorable.
+   * @draft ICU 4.4
+   */
+  boolean allIgnorable(String s);
+
+  /**
+   * Match characters in a string against a prefix and return
+   * the number of chars that matched, or 0 if no match.  Only
+   * primary-order differences are significant in determining
+   * whether there's a match.  This means that the returned
+   * value need not be the same as the length of the prefix.
+   *
+   * @param str The string being tested
+   * @param prefix The text we're hoping to see at the beginning of "str"
+   * @return the number of characters in "str" that were matched
+   * @draft ICU 4.4
+   */
+  public int prefixLength(String str, String prefix);
+
+  int[] findText(String str, String key, int startingAt);
+}
\ No newline at end of file
diff --git a/main/classes/core/src/com/ibm/icu/text/RbnfLenientScannerProvider.java b/main/classes/core/src/com/ibm/icu/text/RbnfLenientScannerProvider.java
new file mode 100644
index 0000000..3bca6af
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/RbnfLenientScannerProvider.java
@@ -0,0 +1,28 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+import com.ibm.icu.util.ULocale;
+
+/**
+ * A provider for an RbnfLenientScanner.
+ *
+ * @draft ICU 4.4
+ */
+public interface RbnfLenientScannerProvider {
+  /**
+   * Returns a scanner appropriate for the given locale, with optional extra data.
+   * in the form of collation rules.
+   *
+   * @param locale the locale to provide the default lenient rules.
+   * @param extras extra collation rules
+   * @return the lenient scanner, or null
+   * @draft ICU 4.4
+   */
+  RbnfLenientScanner get(ULocale locale, String extras);
+}
\ No newline at end of file
diff --git a/main/classes/core/src/com/ibm/icu/text/Replaceable.java b/main/classes/core/src/com/ibm/icu/text/Replaceable.java
new file mode 100644
index 0000000..8bf2743
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/ReplaceableContextIterator.java b/main/classes/core/src/com/ibm/icu/text/ReplaceableContextIterator.java
new file mode 100644
index 0000000..4015838
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/ReplaceableString.java b/main/classes/core/src/com/ibm/icu/text/ReplaceableString.java
new file mode 100644
index 0000000..4c76193
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/ReplaceableString.java
@@ -0,0 +1,197 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+ * <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) {
+        if (srcStart != srcLimit) {
+            buf.getChars(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/main/classes/core/src/com/ibm/icu/text/RuleBasedBreakIterator.java b/main/classes/core/src/com/ibm/icu/text/RuleBasedBreakIterator.java
new file mode 100644
index 0000000..e6d03b7
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/RuleBasedBreakIterator.java
@@ -0,0 +1,1373 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2009 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) {
+            ///CLOVER:OFF
+            // 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;
+            ///CLOVER:ON
+        }
+    }
+    
+    
+    //=======================================================================
+    // 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)) {System.out.println("GOT HERE");
+                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/main/classes/core/src/com/ibm/icu/text/RuleBasedNumberFormat.java b/main/classes/core/src/com/ibm/icu/text/RuleBasedNumberFormat.java
new file mode 100644
index 0000000..15b5193
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/RuleBasedNumberFormat.java
@@ -0,0 +1,1799 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.text;
+
+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;
+
+import com.ibm.icu.impl.ICUDebug;
+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 com.ibm.icu.util.UResourceBundleIterator;
+
+
+/**
+ * <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;
+
+    /**
+     * Selector code that tells the constructor to create a numbering system formatter
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int NUMBERING_SYSTEM = 4;
+
+    //-----------------------------------------------------------------------
+    // 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 RbnfLenientScannerProvider scannerProvider = null;
+
+    // flag to mark whether we've previously looked for a scanner and failed
+    private transient boolean lookedForScanner;
+
+    /**
+     * 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<String, String[]> ruleSetDisplayNames;
+
+    /**
+     * The public rule set names;
+     * @serial
+     */
+    private String[] publicRuleSetNames;
+
+    private static final boolean DEBUG  =  ICUDebug.enabled("rbnf");
+
+    // Temporary workaround - when noParse is true, do noting in parse.
+    // TODO: We need a real fix - see #6895/#6896
+    private boolean noParse;
+    private static final String[] NO_SPELLOUT_PARSE_LANGUAGES = { "ga" };
+
+    //-----------------------------------------------------------------------
+    // 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 four 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"),
+     * DURATION, which formats a duration in seconds as hours, minutes, and seconds, and
+     * NUMBERING_SYSTEM, which is used to invoke rules for alternate numbering
+     * systems such as the Hebrew numbering system, or for Roman numerals, etc..
+     * @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);
+
+        //TODO: we need a real fix - see #6895 / #6896
+        noParse = false;
+        if (locnames[format-1].equals("SpelloutLocalizations")) {
+            String lang = locale.getLanguage();
+            for (int i = 0; i < NO_SPELLOUT_PARSE_LANGUAGES.length; i++) {
+                if (NO_SPELLOUT_PARSE_LANGUAGES[i].equals(lang)) {
+                    noParse = true;
+                    break;
+                }
+            }
+        }
+    }
+
+    private static final String[] rulenames = {
+        "SpelloutRules", "OrdinalRules", "DurationRules", "NumberingSystemRules",
+    };
+    private static final String[] locnames = {
+        "SpelloutLocalizations", "OrdinalLocalizations", "DurationLocalizations", "NumberingSystemLocalizations",
+    };
+
+    /**
+     * 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.
+     * or NUMBERING_SYSTEM, which is used for alternate numbering systems such as Hebrew.
+     * @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 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<String> s = ruleSetDisplayNames.keySet();
+            String[] locales = 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 = 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 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);
+    }
+
+    /**
+     * <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);
+    }
+
+    /**
+     * <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) {
+
+        //TODO: We need a real fix.  See #6895 / #6896
+        if (noParse) {
+            // skip parsing
+            return new Long(0);
+        }
+
+        // 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].isPublic() || !ruleSets[i].isParseable()) {
+                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 an RbnfLenientScanner
+     * for parsing the text.  Lenient parsing is only in effect if a scanner
+     * is set.  If a provider is not set, and this is used for parsing,
+     * a default scanner <code>RbnfLenientScannerProviderImpl</code> will be set if
+     * it is available on the classpath.  Otherwise this will have no effect.
+     *
+     * @param enabled If true, turns lenient-parse mode on; if false, turns it off.
+     * @see RbnfLenientScanner
+     * @see RbnfLenientScannerProvider
+     * @stable ICU 2.0
+     */
+    public void setLenientParseMode(boolean enabled) {
+        lenientParse = enabled;
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * Sets the provider for the lenient scanner.  If this has not been set, 
+     * {@link #setLenientParseMode}
+     * has no effect.  This is necessary to decouple collation from format code.
+     * @param scannerProvider the provider
+     * @see #setLenientParseMode
+     * @see #getLenientScannerProvider
+     * @draft ICU 4.4
+     */
+    public void setLenientScannerProvider(RbnfLenientScannerProvider scannerProvider) {
+        this.scannerProvider = scannerProvider;
+    }
+
+    /**
+     * Returns the lenient scanner provider.  If none was set, and lenient parse is
+     * enabled, this will attempt to instantiate a default scanner, setting it if
+     * it was successful.  Otherwise this returns false.
+     *
+     * @see #setLenientScannerProvider
+     * @draft ICU 4.4
+     */
+    public RbnfLenientScannerProvider getLenientScannerProvider() {
+        // there's a potential race condition if two threads try to set/get the scanner at
+        // the same time, but you get what you get, and you shouldn't be using this from
+        // multiple threads anyway.
+        if (scannerProvider == null && lenientParse && !lookedForScanner) {
+            ///CLOVER:OFF
+            try {
+                lookedForScanner = true;
+                Class<?> cls = Class.forName("com.ibm.icu.text.RbnfScannerProviderImpl");
+                RbnfLenientScannerProvider provider = (RbnfLenientScannerProvider)cls.newInstance();
+                setLenientScannerProvider(provider);
+            }
+            catch (Exception e) {
+                // any failure, we just ignore and return null
+            }
+            ///CLOVER:ON
+        }
+
+        return scannerProvider;
+    }
+
+    /**
+     * 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-numbering") ||
+                       currentName.equals("%digits-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 scanner to use for lenient parsing.  The scanner is
+     * provided by the provider.
+     * @return The collator to use for lenient parsing, or null if lenient parsing
+     * is turned off.
+     */
+    RbnfLenientScanner getLenientScanner() {
+        if (lenientParse) {
+            RbnfLenientScannerProvider provider = getLenientScannerProvider();
+            if (provider != null) {
+                return provider.get(locale, lenientParseRules);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 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 = description.indexOf(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 = description.indexOf(";%", 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 = descBuf.indexOf(";%"); p != -1; p = descBuf.indexOf(";%", 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 = descBuf.indexOf(";%"); p != -1; p = descBuf.indexOf(";%", 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-numbering, %digits-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-numbering") || currentName.equals("%digits-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 = localizations[0].clone();
+
+            Map<String, String[]> m = new HashMap<String, String[]>();
+            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/main/classes/core/src/com/ibm/icu/text/SCSU.java b/main/classes/core/src/com/ibm/icu/text/SCSU.java
new file mode 100644
index 0000000..b12b926
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/SearchIterator.java b/main/classes/core/src/com/ibm/icu/text/SearchIterator.java
new file mode 100644
index 0000000..14de531
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/SimpleDateFormat.java b/main/classes/core/src/com/ibm/icu/text/SimpleDateFormat.java
new file mode 100644
index 0000000..0b38ef5
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/SimpleDateFormat.java
@@ -0,0 +1,3154 @@
+/*
+ *******************************************************************************
+ * 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.io.ObjectOutputStream;
+import java.lang.ref.WeakReference;
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParsePosition;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+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.GregorianCalendar;
+import com.ibm.icu.util.HebrewCalendar;
+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;
+
+    static boolean DelayedHebrewMonthCheck = false;
+    
+    /*
+     * 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 override string of this formatter.  Used to override the
+     * numbering system for one or more fields.
+     * @serial
+     */
+    private String override;
+
+    /**
+     * The hash map used for number format overrides.
+     * @serial
+     */
+    private HashMap<String, NumberFormat> numberFormatters;
+
+    /**
+     * The hash map used for number format overrides.
+     * @serial
+     */
+    private HashMap<Character, String> overrideMap;
+
+    /**
+     * 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, null);
+    }
+
+    /**
+     * 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, null);
+    }
+
+    /**
+     * 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, null);
+    }
+
+    /**
+     * 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, null);
+    }
+
+    /**
+     * Construct a SimpleDateFormat using the given pattern , override and locale.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public SimpleDateFormat(String pattern, String override, ULocale loc)
+    {
+        this(pattern, null, null, null, loc, false,override);
+    }
+
+    /**
+     * 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, null);
+    }
+
+    /**
+     * @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,null);
+    }
+
+    /**
+     * 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, String override) {
+        this(pattern, (DateFormatSymbols)formatData.clone(), (Calendar)calendar.clone(), null, locale, useFastFormat,override);
+    }
+
+    /*
+     * The constructor called from all other SimpleDateFormat constructors
+     */
+    private SimpleDateFormat(String pattern, DateFormatSymbols formatData, Calendar calendar,
+            NumberFormat numberFormat, ULocale locale, boolean useFastFormat,String override) {
+        this.pattern = pattern;
+        this.formatData = formatData;
+        this.calendar = calendar;
+        this.numberFormat = numberFormat;
+        this.locale = locale; // time zone formatting
+        this.useFastFormat = useFastFormat;
+        this.override = override;
+        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) {
+       
+        String ostr = formatConfig.getOverrideString();
+        boolean useFast = ( ostr != null && ostr.length() > 0 );
+
+        return new SimpleDateFormat(formatConfig.getPatternString(),
+                    formatConfig.getDateFormatSymbols(),
+                    formatConfig.getCalendar(),
+                    null,
+                    formatConfig.getLocale(),
+                    useFast,
+                    formatConfig.getOverrideString());
+    }
+
+    /*
+     * 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) {
+            NumberingSystem ns = NumberingSystem.getInstance(locale);
+            if ( ns.isAlgorithmic() ) {
+                numberFormat = NumberFormat.getInstance(locale);
+            } else {
+                char digit0 = ns.getDescription().charAt(0);
+                // Use a NumberFormat optimized for date formatting
+                numberFormat = new DateNumberFormat(locale, digit0);
+            }
+        }
+        // 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();
+
+        if (override != null) {
+           initNumberFormatters(locale);
+        }
+
+    }
+
+    // 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.getDateTimePatterns();
+                int glueIndex = 8;
+                if (dateTimePatterns.length >= 13)
+                {
+                    glueIndex += (SHORT + 1);
+                }
+                cachedDefaultPattern = MessageFormat.format(dateTimePatterns[glueIndex],
+                        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) {
+        TimeZone backupTZ = null;
+        if (cal != calendar && !cal.getType().equals(calendar.getType())) {
+            // Different calendar type
+            // We use the time and time zone from the input calendar, but
+            // do not use the input calendar for field calculation.
+            calendar.setTimeInMillis(cal.getTimeInMillis());
+            backupTZ = calendar.getTimeZone();
+            calendar.setTimeZone(cal.getTimeZone());
+            cal = calendar;
+        }
+        StringBuffer result = format(cal, toAppendTo, pos, null);
+        if (backupTZ != null) {
+            // Restore the original time zone
+            calendar.setTimeZone(backupTZ);
+        }
+        return result;
+    }
+
+    // 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<FieldPosition> 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];
+                int start = 0;
+                if (attributes != null) {
+                    // Save the current length
+                    start = toAppendTo.length();
+                }
+                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 (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);
+                    }
+                }
+            }
+        }
+        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.DOW_LOCAL,
+        /*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, 
+    };
+
+    // 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
+     * 
+     * @stable ICU 3.8
+     */
+    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;
+    }
+
+    /**
+     * 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.
+     */
+    @SuppressWarnings("fallthrough")
+    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;
+
+        NumberFormat currentNumberFormat = getNumberFormat(ch);
+
+        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(currentNumberFormat,buf, value, 2, 2); // clip 1996 to 96
+            } else { //count = 1 or count > 2
+                zeroPaddingNumber(currentNumberFormat,buf, value, count, maxIntCount);
+            }
+            break;
+        case 2: // 'M' - MONTH
+            if ( cal.getType().equals("hebrew")) {
+                boolean isLeap = HebrewCalendar.isLeapYear(cal.get(Calendar.YEAR));
+                if (isLeap && value == 6 && count >= 3 ) {
+                    value = 13; // Show alternate form for Adar II in leap years in Hebrew calendar.
+                }
+                if (!isLeap && value >= 6 && count < 3 ) {
+                    value--; // Adjust the month number down 1 in Hebrew non-leap years, i.e. Adar is 6, not 7.
+                }
+            }
+            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(currentNumberFormat,buf, value+1, count, maxIntCount);
+            }
+            break;
+        case 4: // 'k' - HOUR_OF_DAY (1..24)
+            if (value == 0) {
+                zeroPaddingNumber(currentNumberFormat,buf,
+                                  cal.getMaximum(Calendar.HOUR_OF_DAY)+1,
+                                  count, maxIntCount);
+            } else {
+                zeroPaddingNumber(currentNumberFormat,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 19: // 'e' - DOW_LOCAL (use DOW_LOCAL for numeric, DAY_OF_WEEK for format names)
+            if (count < 3) {
+                zeroPaddingNumber(currentNumberFormat,buf, value, count, maxIntCount);
+                break;
+            }
+            // For alpha day-of-week, we don't want DOW_LOCAL,
+            // we need the standard DAY_OF_WEEK.
+            value = cal.get(Calendar.DAY_OF_WEEK);
+            // fall through, do not break here
+        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(currentNumberFormat,buf,
+                                  cal.getLeastMaximum(Calendar.HOUR)+1,
+                                  count, maxIntCount);
+            } else {
+                zeroPaddingNumber(currentNumberFormat,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(currentNumberFormat,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(currentNumberFormat,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(currentNumberFormat,buf, cal);
+            }
+            break;
+        case 25: // 'c' - STANDALONE DAY (use DOW_LOCAL for numeric, DAY_OF_WEEK for standalone names)
+            if (count < 3) {
+                zeroPaddingNumber(currentNumberFormat,buf, value, 1, maxIntCount);
+                break;
+            }
+            // For alpha day-of-week, we don't want DOW_LOCAL,
+            // we need the standard DAY_OF_WEEK.
+            value = cal.get(Calendar.DAY_OF_WEEK);
+            if (count == 5) {
+                safeAppend(formatData.standaloneNarrowWeekdays, value, buf);
+            } else if (count == 4) {
+                safeAppend(formatData.standaloneWeekdays, value, buf);
+            } else { // count == 3
+                safeAppend(formatData.standaloneShortWeekdays, value, buf);
+            }
+            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(currentNumberFormat,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(currentNumberFormat,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(currentNumberFormat,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(currentNumberFormat,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 20: // 'u' - EXTENDED_YEAR
+            // case 21: // 'g' - JULIAN_DAY
+            // case 22: // 'A' - MILLISECONDS_IN_DAY
+
+            zeroPaddingNumber(currentNumberFormat,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);
+            } else if (pos.getFieldAttribute() == PATTERN_INDEX_TO_DATE_FORMAT_ATTRIBUTE[patternCharIndex]) {
+                pos.setBeginIndex(beginOffset);
+                pos.setEndIndex(beginOffset + buf.length() - bufstart);
+            }
+        }
+    }
+
+    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<String, Object[]> PARSED_PATTERN_CACHE = new SimpleCache<String, Object[]>();
+    private transient Object[] patternItems;
+
+    /*
+     * Returns parsed pattern items.  Each item is either String or
+     * PatternItem.
+     */
+    private Object[] getPatternItems() {
+        if (patternItems != null) {
+            return patternItems;
+        }
+
+        patternItems = 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<Object> items = new ArrayList<Object>();
+
+        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 = items.toArray(new Object[items.size()]);
+
+        PARSED_PATTERN_CACHE.put(pattern, patternItems);
+        
+        return patternItems;
+    }
+
+    /*
+     * Time zone localized GMT format stuffs
+     */
+    private static final String STR_GMT = "GMT";
+    private static final String STR_UT = "UT";
+    private static final String STR_UTC = "UTC";
+    private static final int STR_GMT_LEN = 3;
+    private static final int STR_UT_LEN = 2;
+    private static final int STR_UTC_LEN = 3;
+    private static final char PLUS = '+';
+    private static final char MINUS = '-';
+    private static final char COLON = ':';
+
+    private void appendGMT(NumberFormat currentNumberFormat,StringBuffer buf, Calendar cal) {
+        int offset = cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET);
+
+        if (isDefaultGMTFormat()) {
+            formatGMTDefault(currentNumberFormat,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(NumberFormat currentNumberFormat,StringBuffer buf, int offset) {
+        buf.append(STR_GMT);
+        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(currentNumberFormat,buf, hour, 2, 2);
+        buf.append(COLON);
+        zeroPaddingNumber(currentNumberFormat,buf, min, 2, 2);
+        if (sec != 0) {
+            buf.append(COLON);
+            zeroPaddingNumber(currentNumberFormat,buf, sec, 2, 2);
+        }
+    }
+
+    private Integer parseGMT(String text, ParsePosition pos, NumberFormat currentNumberFormat) {
+        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)
+                        && (pos.getIndex() - start) >= getGMTFormatMinHMSLen(DateFormatSymbols.OFFSET_NEGATIVE)) {
+                    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)
+                        && (pos.getIndex() - start) >= getGMTFormatMinHMSLen(DateFormatSymbols.OFFSET_POSITIVE)) {
+                    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, currentNumberFormat);
+    }
+
+    private Integer parseGMTDefault(String text, ParsePosition pos, NumberFormat currentNumberFormat) {
+        int start = pos.getIndex();
+
+        if (start + STR_UT_LEN + 1 >= text.length()) {
+            pos.setErrorIndex(start);
+            return null;
+        }
+
+        int cur = start;
+        // "GMT"
+        if (text.regionMatches(true, start, STR_GMT, 0, STR_GMT_LEN)) {
+            cur += STR_GMT_LEN;
+        } else if (text.regionMatches(true, start, STR_UT, 0, STR_UT_LEN)) {
+            cur += STR_UT_LEN;
+        } else {
+            pos.setErrorIndex(start);
+            return null;
+        }
+        // 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,currentNumberFormat);
+        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,currentNumberFormat);
+                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,currentNumberFormat);
+                        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<MessageFormat>[] gmtfmtCache;
+
+    @SuppressWarnings("unchecked")
+    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 = gmtfmtCache[cacheIdx].get();
+        }
+        if (fmt == null) {
+            fmt = new MessageFormat(formatData.gmtFormat);
+            GregorianCalendar gcal = new GregorianCalendar(TimeZone.getTimeZone("Etc/UTC"));
+            SimpleDateFormat sdf = (SimpleDateFormat)this.clone();
+            sdf.setCalendar(gcal);
+            sdf.applyPattern(formatData.getGmtHourFormat(sign, width));
+            fmt.setFormat(0, sdf);
+            gmtfmtCache[cacheIdx] = new WeakReference<MessageFormat>(fmt);
+        }
+        return fmt;
+    }
+
+    transient private int[] gmtFormatHmsMinLen = null;
+
+    private int getGMTFormatMinHMSLen(int sign) {
+        if (gmtFormatHmsMinLen == null) {
+            gmtFormatHmsMinLen = new int[2];
+            Long offset = new Long(60*60*1000); // 1 hour
+
+            StringBuffer buf = new StringBuffer();
+            MessageFormat fmtNeg = getGMTFormatter(DateFormatSymbols.OFFSET_NEGATIVE, DateFormatSymbols.OFFSET_HMS);
+            fmtNeg.format(new Object[] {offset}, buf, null);
+            gmtFormatHmsMinLen[0] = buf.length();
+
+            buf.setLength(0);
+            MessageFormat fmtPos = getGMTFormatter(DateFormatSymbols.OFFSET_POSITIVE, DateFormatSymbols.OFFSET_HMS);
+            fmtPos.format(new Object[] {offset}, buf, null);
+            gmtFormatHmsMinLen[1] = buf.length();
+        }
+        return gmtFormatHmsMinLen[(sign < 0 ? 0 : 1)];
+    }
+
+    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(NumberFormat nf,StringBuffer buf, int value,
+                                     int minDigits, int maxDigits) {
+        if (useLocalZeroPaddingNumberFormat) {
+            fastZeroPaddingNumber(buf, value, minDigits, maxDigits);
+        } else {
+            nf.setMinimumIntegerDigits(minDigits);
+            nf.setMaximumIntegerDigits(maxDigits);
+            nf.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)
+    {
+        TimeZone backupTZ = null;
+        Calendar resultCal = null;
+        if (cal != calendar && !cal.getType().equals(calendar.getType())) {
+            // Different calendar type
+            // We use the time/zone from the input calendar, but
+            // do not use the input calendar for field calculation.
+            calendar.setTimeInMillis(cal.getTimeInMillis());
+            backupTZ = calendar.getTimeZone();
+            calendar.setTimeZone(cal.getTimeZone());
+            resultCal = cal;
+            cal = calendar;
+        }
+
+        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);
+                            if (backupTZ != null) {
+                                calendar.setTimeZone(backupTZ);
+                            }
+                            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);
+                        if (backupTZ != null) {
+                            calendar.setTimeZone(backupTZ);
+                        }
+                        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);
+                    if (backupTZ != null) {
+                        calendar.setTimeZone(backupTZ);
+                    }
+                    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);
+            if (backupTZ != null) {
+                calendar.setTimeZone(backupTZ);
+            }
+            return;
+        }
+        // Set the parsed result if local calendar is used
+        // instead of the input calendar
+        if (resultCal != null) {
+            resultCal.setTimeZone(cal.getTimeZone());
+            resultCal.setTimeInMillis(cal.getTimeInMillis());
+        }
+        // Restore the original time zone if required
+        if (backupTZ != null) {
+            calendar.setTimeZone(backupTZ);
+        }
+    }
+
+    /**
+     * 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;
+        NumberFormat currentNumberFormat = 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;
+        }
+
+        currentNumberFormat = getNumberFormat(ch);
+ 
+        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) || !UCharacterProperty.isRuleWhiteSpace(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,currentNumberFormat);
+                } else {
+                    number = parseInt(text, pos, allowNegative,currentNumberFormat);
+                }
+                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);
+
+                // Delayed checking for adjustment of Hebrew month numbers in non-leap years.
+                if (DelayedHebrewMonthCheck) {
+                    if (!HebrewCalendar.isLeapYear(value)) {
+                        cal.add(Calendar.MONTH,1);
+                    }
+                    DelayedHebrewMonthCheck = false;
+                }
+                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);
+                    // When parsing month numbers from the Hebrew Calendar, we might need to adjust the month depending on whether
+                    // or not it was a leap year.  We may or may not yet know what year it is, so might have to delay checking 
+                    // until the year is parsed.
+                    if (cal.getType().equals("hebrew") && value >= 6) {
+                        if (cal.isSet(Calendar.YEAR)) {
+                            if (!HebrewCalendar.isLeapYear(cal.get(Calendar.YEAR))) {
+                                cal.set(Calendar.MONTH, value);
+                            }
+                        } else {
+                            DelayedHebrewMonthCheck = true;
+                        }
+                    }
+                    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, currentNumberFormat);
+                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,currentNumberFormat);
+                        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();
+                }
+                // Step 4
+                // Final attempt - is this standalone GMT/UT/UTC?
+                int gmtLen = 0;
+                if (text.regionMatches(true, start, STR_GMT, 0, STR_GMT_LEN)) {
+                    gmtLen = STR_GMT_LEN;
+                } else if (text.regionMatches(true, start, STR_UTC, 0, STR_UTC_LEN)) {
+                    gmtLen = STR_UTC_LEN;
+                } else if (text.regionMatches(true, start, STR_UT, 0, STR_UT_LEN)) {
+                    gmtLen = STR_UT_LEN;
+                }
+                if (gmtLen > 0) {
+                    tz = TimeZone.getTimeZone("Etc/GMT");
+                    cal.setTimeZone(tz);
+                    return start + gmtLen;
+                }
+
+                // 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,currentNumberFormat);
+                } else {
+                    number = parseInt(text, pos, allowNegative,currentNumberFormat);
+                }
+                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,
+                            NumberFormat fmt) {
+        return parseInt(text, -1, pos, allowNegative, fmt);
+    }
+    
+    /**
+     * Parse an integer using numberFormat up to maxDigits.
+     */
+    private Number parseInt(String text,
+                            int maxDigits,
+                            ParsePosition pos,
+                            boolean allowNegative,
+                            NumberFormat fmt) {
+        Number number;
+        int oldPos = pos.getIndex();
+        if (allowNegative) {
+            number = fmt.parse(text, pos);
+        } else {
+            // Invalidate negative numbers
+            if (fmt instanceof DecimalFormat) {
+                String oldPrefix = ((DecimalFormat)fmt).getNegativePrefix();
+                ((DecimalFormat)fmt).setNegativePrefix(SUPPRESS_NEGATIVE_PREFIX);
+                number = fmt.parse(text, pos);
+                ((DecimalFormat)fmt).setNegativePrefix(oldPrefix);
+            } else {
+                boolean dateNumberFormat = (fmt instanceof DateNumberFormat);
+                if (dateNumberFormat) {
+                    ((DateNumberFormat)fmt).setParsePositiveOnly(true);
+                }
+                number = fmt.parse(text, pos);                
+                if (dateNumberFormat) {
+                    ((DateNumberFormat)fmt).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();
+    }
+
+    /**
+     * 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<FieldPosition> attributes = new ArrayList<FieldPosition>();
+        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 = attributes.get(i);
+            Format.Field attribute = fp.getFieldAttribute();
+            as.addAttribute(attribute, attribute, fp.getBeginIndex(), fp.getEndIndex());
+        }
+        // return the CharacterIterator from AttributedString
+        return as.getIterator();
+    }
+
+    /**
+     * 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;
+    }
+
+    protected NumberFormat getNumberFormat(char ch) {
+
+       Character ovrField;
+       ovrField = new Character(ch);
+       if (overrideMap != null && overrideMap.containsKey(ovrField)) {
+           String nsName = overrideMap.get(ovrField).toString();
+           NumberFormat nf = numberFormatters.get(nsName);
+           return nf;
+       } else {
+           return numberFormat;
+       }
+    }
+
+    private void initNumberFormatters(ULocale loc) {
+
+       numberFormatters = new HashMap<String, NumberFormat>();
+       overrideMap = new HashMap<Character, String>();
+       processOverrideString(loc,override); 
+
+    }
+
+    private void processOverrideString(ULocale loc, String str) {
+
+        if ( str == null || str.length() == 0 )
+            return;
+
+        int start = 0;
+        int end;
+        String nsName;
+        Character ovrField;
+        boolean moreToProcess = true;
+        boolean fullOverride;
+
+        while (moreToProcess) {
+            int delimiterPosition = str.indexOf(";",start);
+            if (delimiterPosition == -1) {
+                moreToProcess = false;
+                end = str.length();
+            } else {
+                end = delimiterPosition;
+            }
+
+            String currentString = str.substring(start,end);
+            int equalSignPosition = currentString.indexOf("=");
+            if (equalSignPosition == -1) { // Simple override string such as "hebrew"
+               nsName = currentString;
+               fullOverride = true;
+            } else { // Field specific override string such as "y=hebrew"
+               nsName = currentString.substring(equalSignPosition+1);
+               ovrField = new Character(currentString.charAt(0));
+               overrideMap.put(ovrField,nsName);
+               fullOverride = false;
+            }
+
+            ULocale ovrLoc = new ULocale(loc.getBaseName()+"@numbers="+nsName);
+            NumberFormat nf = NumberFormat.createInstance(ovrLoc,NumberFormat.NUMBERSTYLE);
+            
+            if (fullOverride) {
+                setNumberFormat(nf);
+            } else {
+                // Since one or more of the override number formatters might be complex,
+                // we can't rely on the fast numfmt where we have a partial field override.
+                useLocalZeroPaddingNumberFormat = false;
+            }
+
+            if (!numberFormatters.containsKey(nsName)) {
+                  numberFormatters.put(nsName,nf);
+            }
+
+            start = delimiterPosition + 1;
+        }
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/text/StringCharacterIterator.java b/main/classes/core/src/com/ibm/icu/text/StringCharacterIterator.java
new file mode 100644
index 0000000..00fa60f
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/StringPrep.java b/main/classes/core/src/com/ibm/icu/text/StringPrep.java
new file mode 100644
index 0000000..56b4ecf
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/StringPrep.java
@@ -0,0 +1,647 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2009, 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 java.lang.ref.WeakReference;
+
+import com.ibm.icu.impl.CharTrie;
+import com.ibm.icu.impl.ICUData;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.StringPrepDataReader;
+import com.ibm.icu.impl.UBiDiProps;
+import com.ibm.icu.lang.UCharacterDirection;
+import com.ibm.icu.util.VersionInfo;
+
+/**
+ * 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;
+
+    /**
+     * Profile type: RFC3491 Nameprep
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC3491_NAMEPREP = 0;
+
+    /**
+     * Profile type: RFC3530 nfs4_cs_prep
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC3530_NFS4_CS_PREP = 1;
+
+    /**
+     * Profile type: RFC3530 nfs4_cs_prep with case insensitive option
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC3530_NFS4_CS_PREP_CI = 2;
+
+    /**
+     * Profile type: RFC3530 nfs4_cis_prep
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC3530_NFS4_CIS_PREP = 3;
+
+    /**
+     * Profile type: RFC3530 nfs4_mixed_prep for prefix
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC3530_NFS4_MIXED_PREP_PREFIX = 4;
+
+    /**
+     * Profile type: RFC3530 nfs4_mixed_prep for suffix
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC3530_NFS4_MIXED_PREP_SUFFIX = 5;
+
+    /**
+     * Profile type: RFC3722 iSCSI
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC3722_ISCSI = 6;
+
+    /**
+     * Profile type: RFC3920 XMPP Nodeprep
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC3920_NODEPREP = 7;
+
+    /**
+     * Profile type: RFC3920 XMPP Resourceprep
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC3920_RESOURCEPREP = 8;
+
+    /**
+     * Profile type: RFC4011 Policy MIB Stringprep
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC4011_MIB = 9;
+
+    /**
+     * Profile type: RFC4013 SASLprep
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC4013_SASLPREP = 10;
+
+    /**
+     * Profile type: RFC4505 trace
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC4505_TRACE = 11;
+
+    /**
+     * Profile type: RFC4518 LDAP
+     * @see #getInstance(int)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final int RFC4518_LDAP = 12;
+
+    /**
+     * Profile type: RFC4518 LDAP for case ignore, numeric and stored prefix
+     * matching rules
+     * @see #getInstance(int)
+     * @provisional This API might change or be removed in a future release.
+     * @draft ICU 4.2
+     */
+    public static final int RFC4518_LDAP_CI = 13;
+
+    // Last available profile
+    private static final int MAX_PROFILE = RFC4518_LDAP_CI;
+
+    // Profile names must be aligned to profile type definitions 
+    private static final String[] PROFILE_NAMES = {
+        "rfc3491",      /* RFC3491_NAMEPREP */
+        "rfc3530cs",    /* RFC3530_NFS4_CS_PREP */
+        "rfc3530csci",  /* RFC3530_NFS4_CS_PREP_CI */
+        "rfc3491",      /* RFC3530_NSF4_CIS_PREP */
+        "rfc3530mixp",  /* RFC3530_NSF4_MIXED_PREP_PREFIX */
+        "rfc3491",      /* RFC3530_NSF4_MIXED_PREP_SUFFIX */
+        "rfc3722",      /* RFC3722_ISCSI */
+        "rfc3920node",  /* RFC3920_NODEPREP */
+        "rfc3920res",   /* RFC3920_RESOURCEPREP */
+        "rfc4011",      /* RFC4011_MIB */
+        "rfc4013",      /* RFC4013_SASLPREP */
+        "rfc4505",      /* RFC4505_TRACE */
+        "rfc4518",      /* RFC4518_LDAP */
+        "rfc4518ci",    /* RFC4518_LDAP_CI */
+    };
+
+    @SuppressWarnings("unchecked")
+    private static final WeakReference<StringPrep>[] CACHE = (WeakReference<StringPrep>[])new WeakReference[MAX_PROFILE+1];
+
+    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 An exception occurs when I/O of the inputstream is invalid
+     * @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();
+        }
+    }
+ 
+    /**
+     * Gets a StringPrep instance for the specified profile
+     * 
+     * @param profile The profile passed to find the StringPrep instance.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static StringPrep getInstance(int profile) {
+        if (profile < 0 || profile > MAX_PROFILE) {
+            throw new IllegalArgumentException("Bad profile type");
+        }
+
+        StringPrep instance = null;
+
+        // A StringPrep instance is immutable.  We use a single instance
+        // per type and store it in the internal cache.
+        synchronized (CACHE) {
+            WeakReference<StringPrep> ref = CACHE[profile];
+            if (ref != null) {
+                instance = ref.get();
+            }
+
+            if (instance == null) {
+                InputStream stream = ICUData.getRequiredStream(ICUResourceBundle.ICU_BUNDLE + "/"
+                        + PROFILE_NAMES[profile] + ".spp");
+                if (stream != null) {
+                    try {
+                        try {
+                            instance = new StringPrep(stream);
+                        } finally {
+                            stream.close();
+                        }
+                    } catch (IOException e) {
+                        throw new RuntimeException(e.toString());
+                    }
+                }
+                if (instance != null) {
+                    CACHE[profile] = new WeakReference<StringPrep>(instance);
+                }
+            }            
+        }
+        return instance;
+    }
+ 
+    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 = (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 prohibited 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 StringPrepParseException An exception occurs when parsing a string is invalid.
+     * @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;
+
+      }
+
+    /**
+     * Prepare the input String for use in applications with the given profile. This operation maps, normalizes(NFKC),
+     * checks for prohibited and BiDi characters in the order defined by RFC 3454
+     * depending on the options specified in the profile.
+     *
+     * @param src           A 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 String A String containing the output
+     * @throws StringPrepParseException An exception when parsing or preparing a string is invalid.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String prepare(String src, int options)
+        throws StringPrepParseException{
+        StringBuffer result = prepare(UCharacterIterator.getInstance(src), options);
+        return result.toString();
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/text/StringPrepParseException.java b/main/classes/core/src/com/ibm/icu/text/StringPrepParseException.java
new file mode 100644
index 0000000..872acab
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/StringTransform.java b/main/classes/core/src/com/ibm/icu/text/StringTransform.java
new file mode 100644
index 0000000..65593db
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/StringTransform.java
@@ -0,0 +1,24 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, Google, 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 extends Transform<String,String> {
+    /**
+     * 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/main/classes/core/src/com/ibm/icu/text/SymbolTable.java b/main/classes/core/src/com/ibm/icu/text/SymbolTable.java
new file mode 100644
index 0000000..22f228c
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/ThaiBreakIterator.java b/main/classes/core/src/com/ibm/icu/text/ThaiBreakIterator.java
new file mode 100644
index 0000000..b525fe3
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/ThaiBreakIterator.java
@@ -0,0 +1,384 @@
+/*
+ *******************************************************************************
+ * 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.InputStream;
+import java.text.CharacterIterator;
+import java.util.Stack;
+
+import com.ibm.icu.impl.Assert;
+
+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<Integer> foundBreaks = new Stack<Integer>();
+        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(Integer.valueOf(current+wordLength));
+            }
+        }
+
+        // Don't return a break for the end of the dictionary range if there is one there
+        if (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] = foundBreaks.elementAt(i).intValue();
+        }
+        cachedBreakPositions[i + 1] = rangeEnd;
+        positionInCache = 0;
+
+        return wordsFound;
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/text/TimeUnitFormat.java b/main/classes/core/src/com/ibm/icu/text/TimeUnitFormat.java
new file mode 100644
index 0000000..653ec58
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/TimeUnitFormat.java
@@ -0,0 +1,511 @@
+/*
+ **************************************************************************
+ * Copyright (C) 2008-2009, Google, International Business Machines
+ * Corporationand others. All Rights Reserved.
+ **************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.Set;
+import java.util.TreeMap;
+
+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
+ * @stable ICU 4.0
+ */
+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<TimeUnit, Map<String, Object[]>> 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.
+     * @stable ICU 4.0
+     */
+    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.
+     * @stable ICU 4.0
+     */
+    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.
+     * @stable ICU 4.0
+     */
+    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.
+     * @stable ICU 4.0
+     */
+    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.
+     * @stable ICU 4.0
+     */
+    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.
+     * @stable ICU 4.0
+     */
+    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 (TimeUnit timeUnit : timeUnitToCountToPatterns.keySet()) {
+            Map<String, Object[]> countToPattern = timeUnitToCountToPatterns.get(timeUnit);
+            for (String count : countToPattern.keySet()) {
+                Object[] pair = 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)
+     * @stable ICU 4.0
+     */
+    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<String, Object[]> countToPattern = timeUnitToCountToPatterns.get(amount.getTimeUnit());
+        double number = amount.getNumber().doubleValue();
+        String count = pluralRules.select(number);
+        MessageFormat pattern = (MessageFormat)(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)
+     * @stable ICU 4.0
+     */
+    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 (TimeUnit timeUnit : timeUnitToCountToPatterns.keySet()) {
+            Map<String, Object[]> countToPattern = timeUnitToCountToPatterns.get(timeUnit);
+            for (String count : countToPattern.keySet()) {
+              for (int styl = FULL_NAME; styl < TOTAL_STYLES; ++styl) {
+                MessageFormat pattern = (MessageFormat)(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<TimeUnit, Map<String, Object[]>>();
+
+        setup("units", timeUnitToCountToPatterns, FULL_NAME);
+        setup("unitsShort", timeUnitToCountToPatterns, ABBREVIATED_NAME);
+        isReady = true;
+    }
+
+
+    private void setup(String resourceKey, Map<TimeUnit, Map<String, Object[]>> 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<String, Object[]> countToPatterns = timeUnitToCountToPatterns.get(timeUnit);
+                if (countToPatterns ==  null) {
+                    countToPatterns = new TreeMap<String, Object[]>();
+                    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 = 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<String> 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<String, Object[]> countToPatterns = timeUnitToCountToPatterns.get(timeUnit);
+            if (countToPatterns == null) {
+                countToPatterns = new TreeMap<String, Object[]>();
+                timeUnitToCountToPatterns.put(timeUnit, countToPatterns);
+            }
+            for (String pluralCount : keywords) {
+                if ( countToPatterns.get(pluralCount) == null ||
+                     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<String, Object[]> 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 = 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 = 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/main/classes/core/src/com/ibm/icu/text/Transform.java b/main/classes/core/src/com/ibm/icu/text/Transform.java
new file mode 100644
index 0000000..c3f5748
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/Transform.java
@@ -0,0 +1,26 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, Google, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+/**
+ * Provide an interface for Transforms that focuses just on the transformation of the text.
+ * APIs that take Transliterator or StringTransform, but only depend on the transformation should use this interface in the API instead.
+ *
+ * @draft ICU 4.4
+ * @author markdavis
+ *
+ */
+
+public interface Transform<S,D> {
+    /**
+     * Transform the input in some way, to be determined by the subclass.
+     * @param source to be transformed (eg lowercased)
+     * @return result
+     * @stable ICU 3.8
+     */
+    public D transform(S source);
+}
diff --git a/main/classes/core/src/com/ibm/icu/text/UCharacterIterator.java b/main/classes/core/src/com/ibm/icu/text/UCharacterIterator.java
new file mode 100644
index 0000000..0a8f094
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/UCharacterIterator.java
@@ -0,0 +1,409 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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 IndexOutOfBoundsException 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 IndexOutOfBoundsException 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/main/classes/core/src/com/ibm/icu/text/UFormat.java b/main/classes/core/src/com/ibm/icu/text/UFormat.java
new file mode 100644
index 0000000..5a7398f
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/UFormat.java
@@ -0,0 +1,110 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2009, 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 implements BaseFormat<Object,StringBuffer,String> {
+    // 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/main/classes/core/src/com/ibm/icu/text/UForwardCharacterIterator.java b/main/classes/core/src/com/ibm/icu/text/UForwardCharacterIterator.java
new file mode 100644
index 0000000..26ae00f
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/UTF16.java b/main/classes/core/src/com/ibm/icu/text/UTF16.java
new file mode 100644
index 0000000..68f578c
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/UTF16.java
@@ -0,0 +1,2679 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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
+    }
+
+    /**
+     * 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
+    }
+
+    /**
+     * 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 If 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 If 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 If 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<String> {
+        // 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(String a, String b) {
+            if (a == b) {
+                return 0;
+            }
+            if (a == null) {
+                return -1;
+            }
+            if (b == null) {
+                return 1;
+            }
+
+            if (m_ignoreCase_) {
+                return compareCaseInsensitive(a, b);
+            }
+            return compareCaseSensitive(a, b);
+        }
+
+        // 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/main/classes/core/src/com/ibm/icu/text/UnicodeCompressor.java b/main/classes/core/src/com/ibm/icu/text/UnicodeCompressor.java
new file mode 100644
index 0000000..21c321f
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/UnicodeCompressor.java
@@ -0,0 +1,1006 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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/main/classes/core/src/com/ibm/icu/text/UnicodeDecompressor.java b/main/classes/core/src/com/ibm/icu/text/UnicodeDecompressor.java
new file mode 100644
index 0000000..a9af2b3
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/UnicodeDecompressor.java
@@ -0,0 +1,557 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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/main/classes/core/src/com/ibm/icu/text/UnicodeFilter.java b/main/classes/core/src/com/ibm/icu/text/UnicodeFilter.java
new file mode 100644
index 0000000..edc4a3d
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/UnicodeFilter.java
@@ -0,0 +1,71 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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 com.ibm.icu.text.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/main/classes/core/src/com/ibm/icu/text/UnicodeMatcher.java b/main/classes/core/src/com/ibm/icu/text/UnicodeMatcher.java
new file mode 100644
index 0000000..a82359a
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/UnicodeReplacer.java b/main/classes/core/src/com/ibm/icu/text/UnicodeReplacer.java
new file mode 100644
index 0000000..49c4c37
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/text/UnicodeSet.java b/main/classes/core/src/com/ibm/icu/text/UnicodeSet.java
new file mode 100644
index 0000000..5f380f5
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/UnicodeSet.java
@@ -0,0 +1,4302 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.io.IOException;
+import java.text.ParsePosition;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.MissingResourceException;
+import java.util.TreeSet;
+
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.RuleCharacterIterator;
+import com.ibm.icu.impl.SortedSetRelation;
+import com.ibm.icu.impl.UBiDiProps;
+import com.ibm.icu.impl.UCaseProps;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.UPropertyAliases;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.util.Freezable;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.VersionInfo;
+
+/**
+ * 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 Iterable<String>, Comparable<UnicodeSet>, Freezable<UnicodeSet> {
+
+    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<String> strings = new TreeSet<String>();
+
+    /**
+     * 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);
+    }
+
+    /**
+     * Quickly constructs a set from a set of ranges <s0, e0, s1, e1, s2, e2, ..., sn, en>.
+     * There must be an even number of integers, and they must be all greater than zero,
+     * all less than or equal to Character.MAX_CODE_POINT.
+     * In each pair (..., si, ei, ...) it must be true that si <= ei
+     * Between adjacent pairs (...ei, sj...), it must be true that ei+1 < sj
+     * @param pairs pairs of character representing ranges
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public UnicodeSet(int... pairs) {
+        if ((pairs.length & 1) != 0) {
+            throw new IllegalArgumentException("Must have even number of integers");
+        }
+        list = new int[pairs.length + 1]; // don't allocate extra space, because it is likely that this is a fixed set.
+        len = list.length;
+        int last = -1; // used to ensure that the results are monotonically increasing.
+        int i = 0;
+        while (i < pairs.length) {
+            // start of pair
+            int start = pairs[i];
+            if (last >= start) {
+                throw new IllegalArgumentException("Must be monotonically increasing.");
+            }
+            list[i++] = last = start;
+            // end of pair
+            int end = pairs[i] + 1;
+            if (last >= end) {
+                throw new IllegalArgumentException("Must be monotonically increasing.");
+            }
+            list[i++] = last = end;
+        }
+        list[i] = HIGH; // terminate
+    }
+
+    /**
+     * 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 = other.list.clone();
+        len = other.len;
+        pat = other.pat;
+        strings = new TreeSet<String>(other.strings);
+        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) {
+        // "Utility.isUnprintable(c)" seems redundant since the the call
+        //      "Utility.escapeUnprintable(buf, c)" does it again inside the if statement
+        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) {
+            for (String s : strings) {
+                result.append('{');
+                _appendToPat(result, s, 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) {
+            for (String s : strings) {
+                //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.
+
+                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;
+
+                for (String trial : strings) {
+                    //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;
+    }
+
+    /**
+     * 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<String> it = strings.iterator();
+                while (it.hasNext()) {
+                    trial = 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 = 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;
+    }
+
+    /**
+     * 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);
+    }
+
+    /**
+     * Adds all characters in range (uses preferred naming convention).
+     * @param start The index of where to start on adding all characters.
+     * @param end The index of where to end on adding all characters.
+     * @return a reference to this object
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public UnicodeSet addAll(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
+        // TODO: Is the "list[i]-1" a typo? Even if you pass MAX_VALUE into
+        //      add_unchecked, the maximum value that "c" will be compared to
+        //      is "MAX_VALUE-1" meaning that "if (c == MAX_VALUE)" will
+        //      never be reached according to this logic.
+        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));
+    }
+
+    /**
+     * Remove all strings from this UnicodeSet
+     * @return this object, for chaining
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final UnicodeSet removeAllStrings() {
+        checkFrozen();
+        if (strings.size() != 0) {
+            strings.clear();
+            pat = null;
+        }
+        return this;
+    }
+
+    /**
+     * 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;
+        }
+        for (String setStr : strings) {
+            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);
+        for (String s : strings) {
+            result.append('|');
+            _appendToPat(result, s, 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 (String item : strings) {
+            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.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public 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.
+     */
+    @SuppressWarnings("fallthrough")
+    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()) {
+            //Eclipse stated the following is "dead code"
+            /*
+            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");
+                    break;
+                case '&':
+                    if (lastItem == 2 && op == 0) {
+                        op = (char) c;
+                        continue;
+                    }
+                    syntaxError(chars, "'&' not after set");
+                    break;
+                case '^':
+                    syntaxError(chars, "'^' not after '['");
+                    break;
+                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 '$'");
+                    break;
+                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
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public <T extends Collection<String>> T addAllTo(T target) {
+        return addAllTo(this, target);
+    }
+
+
+    /**
+     * Add the contents of the UnicodeSet (as strings) into a collection.
+     * @param target collection to add into
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String[] addAllTo(String[] target) {
+        return addAllTo(this, target);
+    }
+
+    /**
+     * Add the contents of the UnicodeSet (as strings) into an array.
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static String[] toArray(UnicodeSet set) {
+        return addAllTo(set, new String[set.size()]);
+    }
+
+    /**
+     * Add the contents of the collection (as strings) into this UnicodeSet.
+     * @param source the collection to add
+     * @return a reference to this object
+     * @stable ICU 2.8
+     */
+    public UnicodeSet add(Collection<?> source) {
+        return addAll(source);
+    }
+
+    /**
+     * Add the contents of the UnicodeSet (as strings) into a collection.
+     * Uses standard naming convention.
+     * @param source collection to add into
+     * @return a reference to this object
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public UnicodeSet addAll(Collection<?> source) {
+        checkFrozen();
+        for (Object o : source) {
+            add(o.toString());
+        }
+        return this;
+    }
+
+    //----------------------------------------------------------------
+    // 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;
+        // TODO: Based on the call hierarchy, polarity of 1 or 2 is never used
+        //      so the following if statement will not be called.
+        ///CLOVER:OFF
+        if (polarity == 1 || polarity == 2) {
+            b = LOW;
+            if (other[j] == LOW) { // skip base if already LOW
+                ++j;
+                b = other[j];
+            }
+            ///CLOVER:ON
+        } 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 A string of the property alias.
+     * @param valueAlias A string of the value alias.
+     * @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.
+            UPropertyAliases pnames = UPropertyAliases.getInstance();
+            p = UProperty.GENERAL_CATEGORY_MASK;
+            v = pnames.getPropertyValueEnum(p, propertyAlias);
+            if (v == UProperty.UNDEFINED) {
+                p = UProperty.SCRIPT;
+                v = pnames.getPropertyValueEnum(p, propertyAlias);
+                if (v == UProperty.UNDEFINED) {
+                    p = pnames.getPropertyEnum(propertyAlias);
+                    if (p == UProperty.UNDEFINED) {
+                        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()) {
+                if ((attribute & CASE) != 0) {
+                    for (String s : strings) {
+                        String str = UCharacter.foldCase(s, 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);
+                    for (String str : strings) {
+                        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 UnicodeSet freeze() {
+        frozen = true;
+        return this;
+    }
+
+    /**
+     * Clone a thawed version of this class, according to the Freezable interface.
+     * @return this
+     * @stable ICU 3.8
+     */
+    public UnicodeSet 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");
+        }
+    }
+
+    // ************************
+    // Additional methods for integration with Generics and Collections
+    // ************************
+
+    /**
+     * Returns a string iterator. Uses the same order of iteration as {@link UnicodeSetIterator}.
+     * @see java.util.Set#iterator()
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Iterator<String> iterator() {
+        return new UnicodeSetIterator2(this);
+    }
+
+    // Cover for string iteration. 
+    private static class UnicodeSetIterator2 implements Iterator<String> {
+        // Invariants:
+        // sourceList != null then sourceList[item] is a valid character
+        // sourceList == null then delegates to stringIterator
+        private int[] sourceList;
+        private int len;
+        private int item;
+        private int current;
+        private int limit;
+        private TreeSet<String> sourceStrings;
+        private Iterator<String> stringIterator;
+        private char[] buffer;
+
+        UnicodeSetIterator2(UnicodeSet source) {
+            // set according to invariants
+            len = source.len - 1;
+            if (item >= len) {
+                stringIterator = source.strings.iterator();
+                sourceList = null;
+            } else {
+                sourceStrings = source.strings;
+                sourceList = source.list;
+                current = sourceList[item++];
+                limit = sourceList[item++];
+            }
+        }
+
+        /* (non-Javadoc)
+         * @see java.util.Iterator#hasNext()
+         */
+        public boolean hasNext() {
+            return sourceList != null || stringIterator.hasNext();
+        }
+
+        /* (non-Javadoc)
+         * @see java.util.Iterator#next()
+         */
+        public String next() {
+            if (sourceList == null) {
+                return stringIterator.next();
+            }
+            int codepoint = current++;
+            // we have the codepoint we need, but we may need to adjust the state
+            if (current >= limit) {
+                if (item >= len) {
+                    stringIterator = sourceStrings.iterator();
+                    sourceList = null;
+                } else {
+                    current = sourceList[item++];
+                    limit = sourceList[item++];
+                }
+            }
+            // Now return. Single code point is easy
+            if (codepoint <= 0xFFFF) {
+                return String.valueOf((char)codepoint);
+            }
+            // But Java lacks a valueOfCodePoint, so we handle ourselves for speed
+            // allocate a buffer the first time, to make conversion faster.
+            if (buffer == null) {
+                buffer = new char[2];
+            }
+            // compute ourselves, to save tests and calls
+            int offset = codepoint - Character.MIN_SUPPLEMENTARY_CODE_POINT;
+            buffer[0] = (char)((offset >>> 10) + Character.MIN_HIGH_SURROGATE);
+            buffer[1] = (char)((offset & 0x3ff) + Character.MIN_LOW_SURROGATE);
+            return String.valueOf(buffer);
+        }
+
+        /* (non-Javadoc)
+         * @see java.util.Iterator#remove()
+         */
+        public void remove() {
+            throw new UnsupportedOperationException();
+        }  
+    }
+
+    /**
+     * @see #containsAll(com.ibm.icu.text.UnicodeSet)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean containsAll(Collection<String> collection) {
+        for (String o : collection) {
+            if (!contains(o)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * @see #containsNone(com.ibm.icu.text.UnicodeSet)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public boolean containsNone(Collection<String> collection) {
+        for (String o : collection) {
+            if (contains(o)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * @see #containsAll(com.ibm.icu.text.UnicodeSet)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public final boolean containsSome(Collection<String> collection) {
+        return !containsNone(collection);
+    }
+
+    /**
+     * @see #addAll(com.ibm.icu.text.UnicodeSet)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public UnicodeSet addAll(String... collection) {
+        checkFrozen();
+        for (String str : collection) {
+            add(str);
+        }
+        return this;
+    }
+
+
+    /**
+     * @see #removeAll(com.ibm.icu.text.UnicodeSet)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public UnicodeSet removeAll(Collection<String> collection) {
+        checkFrozen();
+        for (String o : collection) {
+            remove(o);
+        }
+        return this;
+    }
+
+    /**
+     * @see #retainAll(com.ibm.icu.text.UnicodeSet)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public UnicodeSet retainAll(Collection<String> collection) {
+        checkFrozen();
+        // TODO optimize
+        UnicodeSet toRetain = new UnicodeSet();
+        toRetain.addAll(collection);
+        retainAll(toRetain);
+        return this;
+    }
+
+    public enum ComparisonStyle {SHORTER_FIRST, LEXICOGRAPHIC, LONGER_FIRST}
+
+    /**
+     * Compares UnicodeSets, where shorter come first, and otherwise lexigraphically
+     * (according to the comparison of the first characters that differ).
+     * @see java.lang.Comparable#compareTo(java.lang.Object)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int compareTo(UnicodeSet o) {
+        return compareTo(o, ComparisonStyle.SHORTER_FIRST);
+    }
+    /**
+     * Compares UnicodeSets, in three different ways.
+     * @see java.lang.Comparable#compareTo(java.lang.Object)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int compareTo(UnicodeSet o, ComparisonStyle style) {
+        if (style != ComparisonStyle.LEXICOGRAPHIC) {
+            int diff = size() - o.size();
+            if (diff != 0) {
+                return (diff < 0) == (style == ComparisonStyle.SHORTER_FIRST) ? -1 : 1;
+            }
+        }
+        int result;
+        for (int i = 0; ; ++i) {
+            if (0 != (result = list[i] - o.list[i])) {
+                // if either list ran out, compare to the last string
+                if (list[i] == HIGH) {
+                    if (strings.isEmpty()) return 1;
+                    String item = strings.first();
+                    return compare(item, o.list[i]);
+                }
+                if (o.list[i] == HIGH) {
+                    if (o.strings.isEmpty()) return -1;
+                    String item = o.strings.first();
+                    return -compare(item, list[i]);
+                }
+                // otherwise return the result if even index, or the reversal if not
+                return (i & 1) == 0 ? result : -result;
+            }
+            if (list[i] == HIGH) {
+                break;
+            }
+        }
+        return compare(strings, o.strings);
+    }
+
+    /* (non-Javadoc)
+     * @see java.lang.Comparable#compareTo(java.lang.Object)
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int compareTo(Iterable<String> other) {
+        return compare(this, other);
+    }
+
+    /**
+     * Utility to compare a string to a code point.
+     * Same results as turning the code point into a string (with the [ugly] new StringBuilder().appendCodePoint(codepoint).toString())
+     * and comparing, but much faster (no object creation). 
+     * Note that this (=String) order is UTF-16 order -- *not* code point order.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static int compare(String string, int codePoint) {
+        if (codePoint < Character.MIN_CODE_POINT || codePoint > Character.MAX_CODE_POINT) {
+            throw new IllegalArgumentException();
+        }
+        int stringLength = string.length();
+        if (stringLength == 0) {
+            return -1;
+        }
+        char firstChar = string.charAt(0);
+        int offset = codePoint - Character.MIN_SUPPLEMENTARY_CODE_POINT;
+
+        if (offset < 0) { // BMP codePoint
+            int result = firstChar - codePoint;
+            if (result != 0) {
+                return result;
+            }
+            return stringLength - 1;
+        } 
+        // non BMP
+        char lead = (char)((offset >>> 10) + Character.MIN_HIGH_SURROGATE);
+        int result = firstChar - lead;
+        if (result != 0) {
+            return result;
+        }
+        if (stringLength > 1) {
+            char trail = (char)((offset & 0x3ff) + Character.MIN_LOW_SURROGATE);
+            result = string.charAt(1) - trail;
+            if (result != 0) {
+                return result;
+            }
+        }
+        return stringLength - 2;
+    }
+
+    /**
+     * Utility to compare a string to a code point.
+     * Same results as turning the code point into a string and comparing, but much faster (no object creation). 
+     * Actually, there is one difference; a null compares as less.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static int compare(int codepoint, String a) {
+        return -compare(a, codepoint);
+    }
+
+    /**
+     * Utility to compare two iterables. Warning: the ordering in iterables is important. For Collections that are ordered,
+     * like Lists, that is expected. However, Sets in Java violate Leibniz's law when it comes to iteration.
+     * That means that sets can't be compared directly with this method, unless they are TreeSets without
+     * (or with the same) comparator. Unfortunately, it is impossible to reliably detect in Java whether subclass of
+     * Collection satisfies the right criteria, so it is left to the user to avoid those circumstances.
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static <T extends Comparable<T>> int compare(Iterable<T> collection1, Iterable<T> collection2) {
+        Iterator<T> first = collection1.iterator();
+        Iterator<T> other = collection2.iterator();
+        while (true) {
+            if (!first.hasNext()) {
+                return other.hasNext() ? -1 : 0;
+            } else if (!other.hasNext()) {
+                return 1;
+            }
+            T item1 = first.next();
+            T item2 = other.next();
+            int result = item1.compareTo(item2);
+            if (result != 0) {
+                return result;
+            }
+        }
+    }
+
+    /**
+     * Utility to compare two collections, optionally by size, and then lexicographically.
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static <T extends Comparable<T>> int compare(Collection<T> collection1, Collection<T> collection2, ComparisonStyle style) {
+        if (style != ComparisonStyle.LEXICOGRAPHIC) {
+            int diff = collection1.size() - collection2.size();
+            if (diff != 0) {
+                return (diff < 0) == (style == ComparisonStyle.SHORTER_FIRST) ? -1 : 1;
+            }
+        }
+        return compare(collection1, collection2);
+    }
+
+    /**
+     * Utility for adding the contents of an iterable to a collection.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static <T, U extends Collection<T>> U addAllTo(Iterable<T> source, U target) {
+        for (T item : source) {
+            target.add(item);
+        }
+        return target;
+    }
+
+    /**
+     * Utility for adding the contents of an iterable to a collection.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static <T> T[] addAllTo(Iterable<T> source, T[] target) {
+        int i = 0;
+        for (T item : source) {
+            target[i++] = item;
+        }
+        return target;
+    }
+
+    /**
+     * For iterating through the strings in the set. Example:
+     * <pre>
+     * for (String key : myUnicodeSet.strings()) {
+     *   doSomethingWith(key);
+     * }
+     * </pre>
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Iterable<String> strings() {
+        return Collections.unmodifiableSortedSet(strings);
+    }
+
+    /**
+     * Return the value of the first code point, if the string is exactly one code point. Otherwise return Integer.MAX_VALUE.
+     * @internal
+     */
+    public static int getSingleCodePoint(String s) {
+        int length = s.length();
+        if (length < 1 || length > 2) {
+            return Integer.MAX_VALUE;
+        }
+        int result = s.codePointAt(0);
+        return (result < 0x10000) == (length == 1) ? result : Integer.MAX_VALUE;
+    }
+
+    /**
+     * Simplify the ranges in a Unicode set by merging any ranges that are only separated by characters in the dontCare set. 
+     * For example, the ranges: \\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3000-\\u303E change to \\u2E80-\\u303E 
+     * if the dontCare set includes unassigned characters (for a particular version of Unicode).
+     * @param dontCare Set with the don't-care characters for spanning
+     * @return the input set, modified
+     * @internal
+     */
+    public UnicodeSet addBridges(UnicodeSet dontCare) {
+        UnicodeSet notInInput = new UnicodeSet(this).complement();
+        for (UnicodeSetIterator it = new UnicodeSetIterator(notInInput); it.nextRange();) {
+            if (it.codepoint != 0 && it.codepoint != UnicodeSetIterator.IS_STRING && it.codepointEnd != 0x10FFFF && dontCare.contains(it.codepoint,it.codepointEnd)) {
+                add(it.codepoint,it.codepointEnd);
+            }
+        }
+        return this;
+    }
+
+    /**
+     * Find the first index at or after fromIndex where the UnicodeSet matches at that index.
+     * If findNot is true, then reverse the sense of the match: find the first place where the UnicodeSet doesn't match.
+     * If there is no match, length is returned.
+     * <br>TODO add strings, optimize, using ICU4C algorithms
+     * @internal
+     */
+    public int findIn(CharSequence value, int fromIndex, boolean findNot) {
+        int cp;
+        for (; fromIndex < value.length(); fromIndex += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(value, fromIndex);
+            if (contains(cp) != findNot) {
+                break;
+            }
+        }
+        return fromIndex;
+    }
+
+    /**
+     * Find the last index before fromIndex where the UnicodeSet matches at that index.
+     * If findNot is true, then reverse the sense of the match: find the last place where the UnicodeSet doesn't match.
+     * If there is no match, -1 is returned.
+     * BEFORE index is not in the UnicodeSet.
+     * <br>TODO add strings, optimize, using ICU4C algorithms
+     * @internal
+     */
+    public int findLastIn(CharSequence value, int fromIndex, boolean findNot) {
+        int cp;
+        fromIndex -= 1;
+        for (; fromIndex >= 0; fromIndex -= UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(value, fromIndex);
+            if (contains(cp) != findNot) {
+                break;
+            }
+        }
+        return fromIndex < 0 ? -1 : fromIndex;
+    }
+
+    /**
+     * Strips code points from source. If matches is true, script all that match <i>this</i>. If matches is false, then strip all that <i>don't</i> match.
+     * @param source The source of the CharSequence to strip from.
+     * @param matches A boolean to either strip all that matches or don't match with the current UnicodeSet object.
+     * @return The string after it has been stripped.
+     */
+    public String stripFrom(CharSequence source, boolean matches) {
+        StringBuilder result = new StringBuilder();
+        for (int pos = 0; pos < source.length();) {
+            int inside = findIn(source, pos, !matches);
+            result.append(source.subSequence(pos, inside));
+            pos = findIn(source, inside, matches); // get next start
+        }
+        return result.toString();
+    }
+}
+//eof
diff --git a/main/classes/core/src/com/ibm/icu/text/UnicodeSetIterator.java b/main/classes/core/src/com/ibm/icu/text/UnicodeSetIterator.java
new file mode 100644
index 0000000..9e440f7
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/text/UnicodeSetIterator.java
@@ -0,0 +1,266 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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 = 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 = 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().
+     * @stable ICU 4.0
+     */
+    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.
+     */
+    public UnicodeSet getSet() {
+        return set;
+    }
+    
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int endElement;
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected int nextElement;
+    private Iterator<String> 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/main/classes/core/src/com/ibm/icu/text/package.html b/main/classes/core/src/com/ibm/icu/text/package.html
new file mode 100644
index 0000000..6bd070d
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/AnnualTimeZoneRule.java b/main/classes/core/src/com/ibm/icu/util/AnnualTimeZoneRule.java
new file mode 100644
index 0000000..9fba9d3
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/BasicTimeZone.java b/main/classes/core/src/com/ibm/icu/util/BasicTimeZone.java
new file mode 100644
index 0000000..c3070b7
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/BasicTimeZone.java
@@ -0,0 +1,556 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2009, 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<TimeZoneRule> filteredRules = new LinkedList<TimeZoneRule>();
+
+        // 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 = filteredRules.toArray(new TimeZoneRule[filteredRules.size()]);
+        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/main/classes/core/src/com/ibm/icu/util/BuddhistCalendar.java b/main/classes/core/src/com/ibm/icu/util/BuddhistCalendar.java
new file mode 100644
index 0000000..bd7fcda
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/ByteArrayWrapper.java b/main/classes/core/src/com/ibm/icu/util/ByteArrayWrapper.java
new file mode 100644
index 0000000..d625889
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/ByteArrayWrapper.java
@@ -0,0 +1,283 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.nio.ByteBuffer;
+
+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<ByteArrayWrapper>
+{
+    // 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(ByteArrayWrapper other) {
+        if (this == other) return 0;
+        int minSize = size < other.size ? size : other.size;
+        for (int i = 0; i < minSize; ++i) {
+            if (bytes[i] != other.bytes[i]) {
+                return (bytes[i] & 0xFF) - (other.bytes[i] & 0xFF);
+            }
+        }
+        return size - other.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/main/classes/core/src/com/ibm/icu/util/CECalendar.java b/main/classes/core/src/com/ibm/icu/util/CECalendar.java
new file mode 100644
index 0000000..72ed7d3
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/CECalendar.java
@@ -0,0 +1,274 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2009, 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];
+    }
+
+    // (The following method is not called because all existing subclasses
+    // override it.
+    ///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.
+     */
+    protected int handleGetMonthLength(int extendedYear, int month)
+    {
+
+        // The Ethiopian and Coptic calendars have 13 months, 12 of 30 days each and 
+        // an intercalary month at the end of the year of 5 or 6 days, depending whether 
+        // the year is a leap year or not. The Leap Year follows the same rules as the 
+        // Julian Calendar so that the extra month always has six days in the year before 
+        // a Julian Leap Year.        
+        if ((month + 1) % 13 != 0)
+        {
+            // not intercalary month
+            return 30;
+        }
+        else
+        {
+            // intercalary month 5 days + possible leap day
+            return ((extendedYear % 4) / 3) + 5;
+        }
+
+    }
+    ///CLOVER:ON
+
+    //-------------------------------------------------------------------------
+    // 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
+
+        // handle month > 12, < 0 (e.g. from add/set)
+        if ( month >= 0 ) {
+            year += month/13;
+            month %= 13;
+        } else {
+            ++month;
+            year += month/13 - 1;
+            month = month%13 + 12;
+        }
+        return (int) (
+            jdEpochOffset           // difference from Julian epoch to 1,1,1
+            + 365 * year            // number of days from years
+            + floorDivide(year, 4)  // extra day of leap year
+            + 30 * month            // number of days from months (months are 0-based)
+            + day - 1               // number of days for present month (1 based)
+            );
+    }
+
+    /**
+     * 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/main/classes/core/src/com/ibm/icu/util/Calendar.java b/main/classes/core/src/com/ibm/icu/util/Calendar.java
new file mode 100644
index 0000000..bdf4d47
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/Calendar.java
@@ -0,0 +1,5553 @@
+/*
+*   Copyright (C) 1996-2009, 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.text.StringCharacterIterator;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Set;
+
+import com.ibm.icu.impl.CalendarData;
+import com.ibm.icu.impl.CalendarUtil;
+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> protected constants 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 protected millisecond constants
+ *   defined in <code>Calendar</code>.</li>
+ *
+ *   <li>New API has been added to support 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 protected values 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
+ *     be between the base and maximum field counts.</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 protected constants 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<Calendar> {
+
+    // 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;
+
+    /**
+     * 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.
+     * @draft ICU 4.4
+     */
+    public static final int IS_LEAP_MONTH = 22;
+    
+    /**
+     * 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 = 23;
+
+    /**
+     * 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.
+     * @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<ULocale, WeekData> cachedLocaleData = new Hashtable<ULocale, WeekData>(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) |
+            (1 << IS_LEAP_MONTH);
+        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 String[] calTypes = {
+        "gregorian",
+        "japanese",
+        "buddhist",
+        "roc",
+        "persian",
+        "islamic-civil",
+        "islamic",
+        "hebrew",
+        "chinese",
+        "indian",
+        "coptic",
+        "ethiopic",
+        "ethiopic-amete-alem",
+    };
+
+    // must be in the order of calTypes above
+    private static final int CALTYPE_GREGORIAN = 0;
+    private static final int CALTYPE_JAPANESE = 1;
+    private static final int CALTYPE_BUDDHIST = 2;
+    private static final int CALTYPE_ROC = 3;
+    private static final int CALTYPE_PERSIAN = 4;  // not yet implemented
+    private static final int CALTYPE_ISLAMIC_CIVIL = 5;
+    private static final int CALTYPE_ISLAMIC = 6;
+    private static final int CALTYPE_HEBREW = 7;
+    private static final int CALTYPE_CHINESE = 8;
+    private static final int CALTYPE_INDIAN = 9;
+    private static final int CALTYPE_COPTIC = 10;
+    private static final int CALTYPE_ETHIOPIC = 11;
+    private static final int CALTYPE_ETHIOPIC_AMETE_ALEM = 12;
+    private static final int CALTYPE_UNKNOWN = -1;
+
+    private static int getCalendarTypeForLocale(ULocale l) {
+        String s = CalendarUtil.getCalendarType(l);
+        if (s != null) {
+            s = s.toLowerCase();
+            for (int i = 0; i < calTypes.length; ++i) {
+                if (s.equals(calTypes[i])) {
+                    return i;
+                }
+            }
+        }
+        return CALTYPE_UNKNOWN;
+    }
+
+    /**
+     * 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();
+        }
+        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();
+        }
+        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<String> 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) {
+        Calendar cal = null;
+        TimeZone zone = TimeZone.getDefault();
+        int calType = getCalendarTypeForLocale(locale);
+        if (calType == CALTYPE_UNKNOWN) {
+            // fallback to Gregorian
+            calType = CALTYPE_GREGORIAN;
+        }
+
+        switch (calType) {
+        case CALTYPE_GREGORIAN:
+            cal = new GregorianCalendar(zone, locale);
+            break;
+        case CALTYPE_JAPANESE:
+            cal = new JapaneseCalendar(zone, locale);
+            break;
+        case CALTYPE_BUDDHIST:
+            cal = new BuddhistCalendar(zone, locale);
+            break;
+        case CALTYPE_ROC:
+            cal = new TaiwanCalendar(zone, locale);
+            break;
+        case CALTYPE_PERSIAN:
+            // Not yet implemented in ICU4J
+            cal = new GregorianCalendar(zone, locale);
+            break;
+        case CALTYPE_ISLAMIC_CIVIL:
+            cal = new IslamicCalendar(zone, locale);
+            break;
+        case CALTYPE_ISLAMIC:
+            cal = new IslamicCalendar(zone, locale);
+            ((IslamicCalendar)cal).setCivil(false);
+            break;
+        case CALTYPE_HEBREW:
+            cal = new HebrewCalendar(zone, locale);
+            break;
+        case CALTYPE_CHINESE:
+            cal = new ChineseCalendar(zone, locale);
+            break;
+        case CALTYPE_INDIAN:
+            cal = new IndianCalendar(zone, locale);
+            break;
+        case CALTYPE_COPTIC:
+            cal = new CopticCalendar(zone, locale);
+            break;
+        case CALTYPE_ETHIOPIC:
+            cal = new EthiopicCalendar(zone, locale);
+            break;
+        case CALTYPE_ETHIOPIC_AMETE_ALEM:
+            cal = new EthiopicCalendar(zone, locale);
+            ((EthiopicCalendar)cal).setAmeteAlemEra(true);
+            break;
+        default:
+            // we must not get here, because unknown type is mapped to
+            // Gregorian at the beginning of this method.
+            throw new IllegalArgumentException("Unknown calendar type");
+        }
+
+        return cal;
+    }
+
+    ///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 ====
+
+//    //TODO: The table below should be retrieved from ICU resource when CLDR supplementalData
+//    // is fully updated.
+//    private static final String[][] CALPREF = {
+//        {"001", "gregorian"},
+//        {"AE", "gregorian", "islamic", "islamic-civil"},
+//        {"AF", "gregorian", "islamic", "islamic-civil", "persian"},
+//        {"BH", "gregorian", "islamic", "islamic-civil"},
+//        {"CN", "gregorian", "chinese"},
+//        {"CX", "gregorian", "chinese"},
+//        {"DJ", "gregorian", "islamic", "islamic-civil"},
+//        {"DZ", "gregorian", "islamic", "islamic-civil"},
+//        {"EG", "gregorian", "islamic", "islamic-civil", "coptic"},
+//        {"EH", "gregorian", "islamic", "islamic-civil"},
+//        {"ER", "gregorian", "islamic", "islamic-civil"},
+//        {"ET", "gregorian", "ethiopic", "ethiopic-amete-alem"},
+//        {"HK", "gregorian", "chinese"},
+//        {"IL", "gregorian", "hebrew"},
+//        {"IL", "gregorian", "islamic", "islamic-civil"},
+//        {"IN", "gregorian", "indian"},
+//        {"IQ", "gregorian", "islamic", "islamic-civil"},
+//        {"IR", "gregorian", "islamic", "islamic-civil", "persian"},
+//        {"JO", "gregorian", "islamic", "islamic-civil"},
+//        {"JP", "gregorian", "japanese"},
+//        {"KM", "gregorian", "islamic", "islamic-civil"},
+//        {"KW", "gregorian", "islamic", "islamic-civil"},
+//        {"LB", "gregorian", "islamic", "islamic-civil"},
+//        {"LY", "gregorian", "islamic", "islamic-civil"},
+//        {"MA", "gregorian", "islamic", "islamic-civil"},
+//        {"MO", "gregorian", "chinese"},
+//        {"MR", "gregorian", "islamic", "islamic-civil"},
+//        {"OM", "gregorian", "islamic", "islamic-civil"},
+//        {"PS", "gregorian", "islamic", "islamic-civil"},
+//        {"QA", "gregorian", "islamic", "islamic-civil"},
+//        {"SA", "gregorian", "islamic", "islamic-civil"},
+//        {"SD", "gregorian", "islamic", "islamic-civil"},
+//        {"SG", "gregorian", "chinese"},
+//        {"SY", "gregorian", "islamic", "islamic-civil"},
+//        {"TD", "gregorian", "islamic", "islamic-civil"},
+//        {"TH", "buddhist", "gregorian"},
+//        {"TN", "gregorian", "islamic", "islamic-civil"},
+//        {"TW", "gregorian", "roc", "chinese"},
+//        {"YE", "gregorian", "islamic", "islamic-civil"},
+//    };
+
+    /**
+     * Given a key 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.
+     * @param key           one of the keys supported by this service.  For now, only
+     *                      "calendar" is supported.
+     * @param locale        the locale
+     * @param commonlyUsed  if set to true it will return only commonly used values
+     *                      with the given locale in preferred order.  Otherwise,
+     *                      it will return all the available values for the locale.
+     * @return an array of string values for the given key and the locale.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String[] getKeywordValuesForLocale(String key, ULocale locale, boolean commonlyUsed) {
+        // Resolve region
+        String prefRegion = locale.getCountry();
+        if (prefRegion.length() == 0){
+            ULocale loc = ULocale.addLikelySubtags(locale);
+            prefRegion = loc.getCountry();
+        }
+
+        // Read preferred calendar values from supplementalData calendarPreferences
+        ArrayList<String> values = new ArrayList<String>();
+
+        UResourceBundle rb = UResourceBundle.getBundleInstance(
+                                        ICUResourceBundle.ICU_BASE_NAME,
+                                        "supplementalData",
+                                        ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+        UResourceBundle calPref = rb.get("calendarPreferenceData");
+        UResourceBundle order = null;
+        try {
+            order = calPref.get(prefRegion);
+        } catch (MissingResourceException mre) {
+            // use "001" as fallback
+            order = calPref.get("001");
+        }
+
+        String[] caltypes = order.getStringArray();
+        if (commonlyUsed) {
+            // we have all commonly used calendar for the target region
+            return caltypes;
+        }
+
+        // if not commonlyUsed, add all preferred calendars in the order
+        for (int i = 0; i < caltypes.length; i++) {
+            values.add(caltypes[i]);
+        }
+        // then, add other available clanedars
+        for (int i = 0; i < calTypes.length; i++) {
+            if (!values.contains(calTypes[i])) {
+                values.add(calTypes[i]);
+            }
+        }
+        return values.toArray(new String[values.size()]);
+    }
+
+    /**
+     * 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 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);
+    }
+
+    //-------------------------------------------------------------------------
+    // 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, null, 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
+     * @stable ICU 2.0
+     */
+    protected DateFormat handleGetDateFormat(String pattern, String override, Locale locale) {
+        return handleGetDateFormat(pattern, override, 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
+     * @stable ICU 2.0
+     */
+    protected DateFormat handleGetDateFormat(String pattern, ULocale locale) {
+        return handleGetDateFormat(pattern, null, 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 (retain)
+     * @provisional This API might change or be removed in a future release.
+     */
+    protected DateFormat handleGetDateFormat(String pattern, String override, ULocale locale) {
+        FormatConfiguration fmtConfig = new FormatConfiguration();
+        fmtConfig.pattern = pattern;
+        fmtConfig.override = override;
+        fmtConfig.formatData = new DateFormatSymbols(this, locale);
+        fmtConfig.loc = locale;
+        fmtConfig.cal = this;
+
+        return SimpleDateFormat.getInstance(fmtConfig);
+    }
+
+    // date format pattern cache
+    private static final ICUCache<String, PatternData> PATTERN_CACHE = new SimpleCache<String, PatternData>();
+    // 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}",
+        "{1} {0}",
+        "{1} {0}",
+        "{1} {0}",
+        "{1} {0}"
+    };
+
+    static private DateFormat formatHelper(Calendar cal, ULocale loc, int dateStyle, int timeStyle) {
+        PatternData patternData = PatternData.make(cal, loc); 
+        String override = null;
+
+        // Resolve a pattern for the date/time style
+        String pattern = null;
+        if ((timeStyle >= 0) && (dateStyle >= 0)) {
+            pattern = MessageFormat.format(patternData.getDateTimePattern(dateStyle),
+                    new Object[] {patternData.patterns[timeStyle], patternData.patterns[dateStyle + 4]});
+            // Might need to merge the overrides from the date and time into a single override string
+            // TODO: Right now we are forcing the date's override into the time style.
+            if ( patternData.overrides != null ) {
+                String dateOverride = patternData.overrides[dateStyle + 4];
+                String timeOverride = patternData.overrides[timeStyle];
+                override = mergeOverrideStrings(patternData.patterns[dateStyle+4],patternData.patterns[timeStyle],dateOverride,timeOverride);
+            }
+        } else if (timeStyle >= 0) {
+            pattern = patternData.patterns[timeStyle];
+            if ( patternData.overrides != null ) {
+                override = patternData.overrides[timeStyle];
+            }
+        } else if (dateStyle >= 0) {
+            pattern = patternData.patterns[dateStyle + 4];
+            if ( patternData.overrides != null ) {
+                override = patternData.overrides[dateStyle + 4];
+            }
+        } else {
+            throw new IllegalArgumentException("No date or time style specified");
+        }
+        DateFormat result = cal.handleGetDateFormat(pattern, override, loc);
+        result.setCalendar(cal);
+        return result;
+    }
+    
+    static class PatternData {
+        // TODO make this even more object oriented
+        private String[] patterns;
+        private String[] overrides;
+        public PatternData(String[] patterns, String[] overrides) {
+            this.patterns = patterns;
+            this.overrides = overrides;
+        }
+        private String getDateTimePattern(int dateStyle) {
+            int glueIndex = 8;
+            if (patterns.length >= 13) {
+                glueIndex += (dateStyle + 1);
+            }
+            final String dateTimePattern = patterns[glueIndex];
+            return dateTimePattern;
+        }
+        private static PatternData make(Calendar cal, ULocale loc) {
+            // First, try to get a pattern from PATTERN_CACHE
+            String key = loc.toString() + cal.getType();
+            PatternData patternData = PATTERN_CACHE.get(key);
+            if (patternData == null) {
+                // Cache missed.  Get one from bundle
+                try {
+                    CalendarData calData = new CalendarData(loc, cal.getType());
+                    patternData = new PatternData(calData.getDateTimePatterns(), calData.getOverrides());
+                } catch (MissingResourceException e) {
+                    patternData = new PatternData(DEFAULT_PATTERNS, null);
+                }
+                PATTERN_CACHE.put(key, patternData);
+            }
+            return patternData;
+        }
+    }
+    
+    /**
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static String getDateTimePattern(Calendar cal, ULocale uLocale, int dateStyle) {
+        PatternData patternData = PatternData.make(cal, uLocale); 
+        return patternData.getDateTimePattern(dateStyle);
+    }
+
+    private static String mergeOverrideStrings( String datePattern, String timePattern, String dateOverride, String timeOverride ) {
+
+        if ( dateOverride == null && timeOverride == null ) {
+            return null;
+        }
+
+        if ( dateOverride == null ) {
+            return expandOverride(timePattern,timeOverride);
+        }
+
+        if ( timeOverride == null ) {
+            return expandOverride(datePattern,dateOverride);
+        }
+        
+        if ( dateOverride.equals(timeOverride) ) {
+            return dateOverride;
+        }
+
+        return (expandOverride(datePattern,dateOverride)+";"+expandOverride(timePattern,timeOverride));
+
+    }
+
+    private static final char QUOTE = '\'';
+    private static String expandOverride(String pattern, String override) {
+
+        if (override.indexOf('=') >= 0) {
+            return override;
+        }
+        boolean inQuotes = false;
+        char prevChar = ' ';
+        StringBuffer result = new StringBuffer();
+
+        StringCharacterIterator it = new StringCharacterIterator(pattern);
+
+        for (char c = it.first(); c!= StringCharacterIterator.DONE; c = it.next()) {
+            if ( c == QUOTE ) {
+               inQuotes = !inQuotes;
+               prevChar = c;
+               continue;
+            }
+            if ( !inQuotes && c != prevChar ) {
+                if (result.length() > 0) {
+                    result.append(";");
+                }
+                result.append(c);
+                result.append("=");
+                result.append(override);
+            }  
+            prevChar = c;
+        } 
+        return result.toString();
+    }
+    /**
+     * 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 String override;
+        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;
+        }
+
+        public String getOverrideString() {
+            return override;
+        }
+
+        /**
+         * 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) {
+            //Eclipse stated the following is "dead code"
+            /*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
+        {           0,            0,             1,             1  }, // IS_LEAP_MONTH
+        
+    };
+
+    /**
+     * 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:
+        case IS_LEAP_MONTH:
+            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 = 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 (retain)
+     * @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 (retain)
+     * @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 --------
+}
diff --git a/main/classes/core/src/com/ibm/icu/util/CalendarServiceShim.java b/main/classes/core/src/com/ibm/icu/util/CalendarServiceShim.java
new file mode 100644
index 0000000..6ea42f5
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/CalendarServiceShim.java
@@ -0,0 +1,107 @@
+/*
+*   Copyright (C) 2007-2009, 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();
+        }
+        return service.getAvailableLocales();
+    }
+
+    ULocale[] getAvailableULocales() {
+        if (service.isDefault()) {
+            return ICUResourceBundle.getAvailableULocales();
+        }
+        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<String> 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/main/classes/core/src/com/ibm/icu/util/CaseInsensitiveString.java b/main/classes/core/src/com/ibm/icu/util/CaseInsensitiveString.java
new file mode 100644
index 0000000..a0818da
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/ChineseCalendar.java b/main/classes/core/src/com/ibm/icu/util/ChineseCalendar.java
new file mode 100644
index 0000000..246dfb0
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/ChineseCalendar.java
@@ -0,0 +1,969 @@
+/*********************************************************************
+ * Copyright (C) 2000-2009, 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>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.
+     * @stable ICU 4.0
+     */
+    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 Chinese calendar's (@link #IS_LEAP_MONTH)
+     *                  time field.
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     * @stable ICU 4.0
+     */
+    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.
+     * @stable ICU 4.0
+     */
+    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
+     * @stable ICU 4.0
+     */
+    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
+     * @stable ICU 4.0
+     */
+    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
+     * @stable ICU 4.0
+     */
+    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;
+
+
+    //------------------------------------------------------------------
+    // Calendar framework
+    //------------------------------------------------------------------
+
+    /**
+     * 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, String override, ULocale locale) {
+        return new ChineseDateFormat(pattern, override, 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/main/classes/core/src/com/ibm/icu/util/CompactByteArray.java b/main/classes/core/src/com/ibm/icu/util/CompactByteArray.java
new file mode 100644
index 0000000..926a1fa
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/CompactByteArray.java
@@ -0,0 +1,384 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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 = values.clone();
+            other.indices = indices.clone();
+            if (hashes != null) other.hashes = 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/main/classes/core/src/com/ibm/icu/util/CompactCharArray.java b/main/classes/core/src/com/ibm/icu/util/CompactCharArray.java
new file mode 100644
index 0000000..62a0732
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/CompactCharArray.java
@@ -0,0 +1,410 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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 = values.clone();
+            other.indices = indices.clone();
+            if (hashes != null) other.hashes = 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/main/classes/core/src/com/ibm/icu/util/CopticCalendar.java b/main/classes/core/src/com/ibm/icu/util/CopticCalendar.java
new file mode 100644
index 0000000..b1db47c
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/Currency.java b/main/classes/core/src/com/ibm/icu/util/Currency.java
new file mode 100644
index 0000000..fa58cd0
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/Currency.java
@@ -0,0 +1,1164 @@
+/**
+ *******************************************************************************
+ * 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.Map;
+import java.util.MissingResourceException;
+import java.util.Set;
+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<ULocale, Vector<TextTrieMap<CurrencyStringInfo>>> CURRENCY_NAME_CACHE =
+        new SimpleCache<ULocale, Vector<TextTrieMap<CurrencyStringInfo>>>();
+
+    /**
+     * 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.
+     * @stable ICU 4.0
+     */
+    public static String[] getAvailableCurrencyCodes(ULocale loc, Date d) 
+    {
+        // local variables
+        String country = loc.getCountry();
+        long dateL = d.getTime();
+        long mask = 4294967295L;
+
+        Vector<String> currCodeVector = new Vector<String>();
+
+        // 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 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 NullPointerException 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();
+        } 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();
+        } else {
+            return shim.getAvailableULocales();
+        }
+    }
+
+    // end registry stuff
+
+    /**
+     * Given a key 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.
+     * @param key           one of the keys supported by this service.  For now, only
+     *                      "currency" is supported.
+     * @param locale        the locale
+     * @param commonlyUsed  if set to true it will return only commonly used values
+     *                      with the given locale in preferred order.  Otherwise,
+     *                      it will return all the available values for the locale.
+     * @return an array of string values for the given key and the locale.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final String[] getKeywordValuesForLocale(String key, ULocale locale, boolean commonlyUsed) {
+        // Resolve region
+        String prefRegion = locale.getCountry();
+        if (prefRegion.length() == 0){
+            ULocale loc = ULocale.addLikelySubtags(locale);
+            prefRegion = loc.getCountry();
+        }
+
+        // Read values from supplementalData
+        List<String> values = new ArrayList<String>();
+        List<String> otherValues = new ArrayList<String>();
+
+        UResourceBundle bundle = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "supplementalData");
+        bundle = bundle.get("CurrencyMap");
+        Enumeration<String> keyEnum = bundle.getKeys();
+        boolean done = false;
+        while (keyEnum.hasMoreElements() && !done) {
+            String region = keyEnum.nextElement();
+            boolean isPrefRegion = prefRegion.equals(region);
+            if (!isPrefRegion && commonlyUsed) {
+                // With commonlyUsed=true, we do not put
+                // currencies for other regions in the
+                // result list.
+                continue;
+            }
+            UResourceBundle regbndl = bundle.get(region);
+            for (int i = 0; i < regbndl.getSize(); i++) {
+                UResourceBundle curbndl = regbndl.get(i);
+                if (curbndl.getType() != UResourceBundle.TABLE) {
+                    // Currently, an empty ARRAY is mixed in..
+                    continue;
+                }
+                String curID = curbndl.getString("id");
+                boolean hasTo = false;
+                try {
+                    UResourceBundle to = curbndl.get("to");
+                    if (to != null) {
+                        hasTo = true;
+                    }
+                } catch (MissingResourceException e) {
+                    // Do nothing here...
+                }
+                if (isPrefRegion && !hasTo && !values.contains(curID)) {
+                    // Currently active currency for the target country
+                    values.add(curID);
+                } else if (!otherValues.contains(curID) && !commonlyUsed){
+                    otherValues.add(curID);
+                }
+            }
+        }
+        if (commonlyUsed) {
+            if (values.size() == 0) {
+                // This could happen if no valid region is supplied in the input
+                // locale.  In this case, we use the CLDR's default.
+                return getKeywordValuesForLocale(key, new ULocale("und"), true);
+            }
+        } else {
+            // Consolidate the list
+            for (String curID : otherValues) {
+                if (!values.contains(curID)) {
+                    values.add(curID);
+                }
+            }
+        }
+        return values.toArray(new String[values.size()]);
+    }
+
+    /**
+     * 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 type parse against currency type: LONG_NAME only or not
+     * @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, int type, ParsePosition pos) {
+        Vector<TextTrieMap<CurrencyStringInfo>> currencyTrieVec = CURRENCY_NAME_CACHE.get(locale);
+        if (currencyTrieVec == null) {
+            TextTrieMap<CurrencyStringInfo> currencyNameTrie = new TextTrieMap<CurrencyStringInfo>(true);
+            TextTrieMap<CurrencyStringInfo> currencySymbolTrie = new TextTrieMap<CurrencyStringInfo>(false);
+            currencyTrieVec = new Vector<TextTrieMap<CurrencyStringInfo>>();
+            currencyTrieVec.addElement(currencySymbolTrie);
+            currencyTrieVec.addElement(currencyNameTrie);
+            setupCurrencyTrieVec(locale, currencyTrieVec);
+            CURRENCY_NAME_CACHE.put(locale, currencyTrieVec);
+        }
+        
+        int maxLength = 0;
+        String isoResult = null;
+
+          // look for the names
+        TextTrieMap<CurrencyStringInfo> currencyNameTrie = currencyTrieVec.elementAt(1);
+        CurrencyNameResultHandler handler = new CurrencyNameResultHandler();
+        currencyNameTrie.find(text, pos.getIndex(), handler);
+        List<CurrencyStringInfo> list = handler.getMatchedCurrencyNames();
+        if (list != null && list.size() != 0) {
+            for (CurrencyStringInfo info : list) {
+                String isoCode = info.getISOCode();
+                String currencyString = info.getCurrencyString();
+                if (currencyString.length() > maxLength) {
+                    maxLength = currencyString.length();
+                    isoResult = isoCode;
+                }
+            }
+        }
+
+        if (type != Currency.LONG_NAME) {  // not long name only
+            TextTrieMap<CurrencyStringInfo> currencySymbolTrie = currencyTrieVec.elementAt(0);
+            handler = new CurrencyNameResultHandler();
+            currencySymbolTrie.find(text, pos.getIndex(), handler);
+            list = handler.getMatchedCurrencyNames();
+            if (list != null && list.size() != 0) {
+                for (CurrencyStringInfo info : list) {
+                    String isoCode = info.getISOCode();
+                    String currencyString = info.getCurrencyString();
+                    if (currencyString.length() > maxLength) {
+                        maxLength = currencyString.length();
+                        isoResult = isoCode;
+                    }
+                }
+            }
+        }
+
+        int start = pos.getIndex();
+        pos.setIndex(start + maxLength);
+        return isoResult;
+    }
+
+    private static void setupCurrencyTrieVec(ULocale locale, Vector<TextTrieMap<CurrencyStringInfo>> trieVec) {
+        // 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}.
+        */
+
+        TextTrieMap<CurrencyStringInfo> symTrie = trieVec.elementAt(0);
+        TextTrieMap<CurrencyStringInfo> trie = trieVec.elementAt(1);
+
+        HashSet<String> visited = new HashSet<String>();
+        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);
+                        symTrie.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]);
+                                symTrie.put((String)names[nameIndex], info);
+                            }
+                        } else {
+                            info = new CurrencyStringInfo(ISOCode, name);
+                            symTrie.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"} 
+        //|    }
+        //|    //...
+        //|  }
+        //|}
+
+        Map<String, Set<String>> visitedInMap = new HashMap<String, Set<String>>();
+        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();
+                    Set<String> visitPluralCount = visitedInMap.get(ISOCode);
+                    if (visitPluralCount == null) {
+                        visitPluralCount = new HashSet<String>();
+                        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<CurrencyStringInfo> {
+        private ArrayList<CurrencyStringInfo> resultList;
+    
+        public boolean handlePrefixMatch(int matchLength, Iterator<CurrencyStringInfo> values) {
+            if (resultList == null) {
+                resultList = new ArrayList<CurrencyStringInfo>();
+            }
+            while (values.hasNext()) {
+                CurrencyStringInfo item = values.next();
+                if (item == null) {
+                    break;
+                }
+                int i = 0;
+                for (; i < resultList.size(); i++) {
+                    CurrencyStringInfo tmp = 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<CurrencyStringInfo> 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.
+     * @stable ICU 3.4
+     */
+    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 --------
+}
+
+//eof
diff --git a/main/classes/core/src/com/ibm/icu/util/CurrencyAmount.java b/main/classes/core/src/com/ibm/icu/util/CurrencyAmount.java
new file mode 100644
index 0000000..d7657b8
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/CurrencyServiceShim.java b/main/classes/core/src/com/ibm/icu/util/CurrencyServiceShim.java
new file mode 100644
index 0000000..d1de142
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/CurrencyServiceShim.java
@@ -0,0 +1,75 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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();
+        }
+        return service.getAvailableLocales();
+    }
+
+    ULocale[] getAvailableULocales() {
+        if (service.isDefault()) {
+            return ICUResourceBundle.getAvailableULocales();
+        }
+        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/main/classes/core/src/com/ibm/icu/util/DateInterval.java b/main/classes/core/src/com/ibm/icu/util/DateInterval.java
new file mode 100644
index 0000000..8b1131b
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/DateInterval.java
@@ -0,0 +1,85 @@
+/*
+ *******************************************************************************
+ *   Copyright (C) 2008-2009, 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.
+ * @stable ICU 4.0
+ */
+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.
+     * @stable ICU 4.0
+     */
+    public DateInterval(long from, long to)
+    {
+        fromDate = from;
+        toDate = to;
+    }
+
+    /** 
+     * Get the from date.
+     * @return  the from date in dateInterval.
+     * @stable ICU 4.0
+     */
+    public long getFromDate()
+    {
+        return fromDate;
+    }
+
+    /** 
+     * Get the to date.
+     * @return  the to date in dateInterval.
+     * @stable ICU 4.0
+     */
+    public long getToDate()
+    {
+        return toDate;
+    }
+
+    /**
+     * Override equals
+     * @stable ICU 4.0
+     */
+    public boolean equals(Object a) {
+        if ( a instanceof DateInterval ) {
+            DateInterval di = (DateInterval)a;
+            return fromDate == di.fromDate && toDate == di.toDate;
+        }
+        return false;
+    }
+
+    /**
+     * Override hashcode
+     * @stable ICU 4.0
+     */
+    public int hashCode() {
+        return (int)(fromDate + toDate);
+    }
+
+    /**
+     * Override toString
+     * @stable ICU 4.0
+     */
+    public String toString() {
+        return String.valueOf(fromDate) + " " + String.valueOf(toDate);
+    }
+
+} // end class DateInterval
diff --git a/main/classes/core/src/com/ibm/icu/util/DateRule.java b/main/classes/core/src/com/ibm/icu/util/DateRule.java
new file mode 100644
index 0000000..35341f9
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/DateTimeRule.java b/main/classes/core/src/com/ibm/icu/util/DateTimeRule.java
new file mode 100644
index 0000000..61a815b
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/EasterHoliday.java b/main/classes/core/src/com/ibm/icu/util/EasterHoliday.java
new file mode 100644
index 0000000..5f14e20
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/EthiopicCalendar.java b/main/classes/core/src/com/ibm/icu/util/EthiopicCalendar.java
new file mode 100644
index 0000000..e33c177
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/Freezable.java b/main/classes/core/src/com/ibm/icu/util/Freezable.java
new file mode 100644
index 0000000..cd7acad
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/Freezable.java
@@ -0,0 +1,321 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 200-2009, 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) {
+ *    // unsafe getter
+ *    A a = x.getA();
+ *    Collection col = a.get_b();
+ *    col.add(something); // a has now been changed, and x too
+ *
+ *    // unsafe constructor
+ *    a = new A(col, col);
+ *    y.store(a);
+ *    col.add(something); // a has now been changed, and y too
+ *  }
+ * </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<A> {
+ *   ...
+ *   public final boolean isFrozen() {return true;}
+ *   public final A freeze() {return this;}
+ *   public final A 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 A 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 A 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<T> 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 T freeze();
+
+    /**
+     * Provides for the clone operation. Any clone is initially unlocked.
+     * @stable ICU 3.8
+     */
+    public T cloneAsThawed();
+}
diff --git a/main/classes/core/src/com/ibm/icu/util/GregorianCalendar.java b/main/classes/core/src/com/ibm/icu/util/GregorianCalendar.java
new file mode 100644
index 0000000..0760788
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/GregorianCalendar.java
@@ -0,0 +1,908 @@
+/*
+ * Copyright (C) 1996-2009, 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.MARCH, 2, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
+ * pdt.setEndRule(Calendar.NOVEMBER, 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/main/classes/core/src/com/ibm/icu/util/HebrewCalendar.java b/main/classes/core/src/com/ibm/icu/util/HebrewCalendar.java
new file mode 100644
index 0000000..5447809
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/HebrewCalendar.java
@@ -0,0 +1,875 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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.
+     */
+    public static final boolean isLeapYear(int year) {
+        //return (year * 12 + 17) % 19 >= 12;
+        int x = (year*12 + 17) % 19;
+        return x >= ((x < 0) ? -7 : 12);
+    }
+
+    public 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/main/classes/core/src/com/ibm/icu/util/HebrewHoliday.java b/main/classes/core/src/com/ibm/icu/util/HebrewHoliday.java
new file mode 100644
index 0000000..01fff4a
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/Holiday.java b/main/classes/core/src/com/ibm/icu/util/Holiday.java
new file mode 100644
index 0000000..0e2b646
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/IllformedLocaleException.java b/main/classes/core/src/com/ibm/icu/util/IllformedLocaleException.java
new file mode 100644
index 0000000..25544ad
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/IllformedLocaleException.java
@@ -0,0 +1,56 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+/**
+ * Thrown by methods in Locale class to indicate that a locale string
+ * is illformed.
+ * 
+ * @draft ICU 4.2
+ * @provisional This API might change or be removed in a future release.
+ */
+public class IllformedLocaleException extends IllegalArgumentException {
+
+    private static final long serialVersionUID = 1L;
+
+    private int _errIdx = -1;
+
+    /**
+     * Constructs a new <code>IllformedLocaleException</code> with
+     * the detail message.
+     * @param msg the detail message
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public IllformedLocaleException(String msg) {
+        this(msg, -1);
+    }
+
+    /**
+     * Constructs a new <code>IllformedLocaleException</code> with
+     * the detail message and the error index.
+     * @param msg the detail message
+     * @param errIdx the index where the error is found in a locale string
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public IllformedLocaleException(String msg, int errIdx) {
+        super(msg + ((errIdx == -1) ? "" : " [at index " + errIdx + "]"));
+        _errIdx = errIdx;
+    }
+
+    /**
+     * Returns the index where the error is found in a locale string
+     * @return the index where the error is found in a locale string or
+     *         -1 if unknown.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public int getErrorIndex() {
+        return _errIdx;
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/util/IndianCalendar.java b/main/classes/core/src/com/ibm/icu/util/IndianCalendar.java
new file mode 100644
index 0000000..0320026
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/InitialTimeZoneRule.java b/main/classes/core/src/com/ibm/icu/util/InitialTimeZoneRule.java
new file mode 100644
index 0000000..f2bf3ed
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/IslamicCalendar.java b/main/classes/core/src/com/ibm/icu/util/IslamicCalendar.java
new file mode 100644
index 0000000..16d8caf
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/JapaneseCalendar.java b/main/classes/core/src/com/ibm/icu/util/JapaneseCalendar.java
new file mode 100644
index 0000000..b12441e
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/JapaneseCalendar.java
@@ -0,0 +1,665 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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 (retain)
+     * @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 (retain)
+     * @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
+     */
+    @SuppressWarnings("fallthrough")
+    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];
+            }
+            //Fall through to the default if not handled above
+        }
+        default:
+            return super.handleGetLimit(field, limitType);
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 3.8
+     */
+    public String getType() {
+        return "japanese";
+    }
+
+    /**
+     * {@inheritDoc}
+     * @stable ICU 4.0
+     */
+    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/main/classes/core/src/com/ibm/icu/util/LocaleData.java b/main/classes/core/src/com/ibm/icu/util/LocaleData.java
new file mode 100644
index 0000000..b39819b
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/LocaleData.java
@@ -0,0 +1,356 @@
+/*
+ ****************************************************************************************
+ * Copyright (C) 2009, Google, Inc.; 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 static final String LOCALE_DISPLAY_PATTERN  = "localeDisplayPattern";
+    private static final String PATTERN             = "pattern";
+    private static final String SEPARATOR           = "separator";
+    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]);
+    }
+    
+    /**
+     * Returns LocaleDisplayPattern for this locale, e.g., {0}({1})
+     * @return locale display pattern as a String.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */ 
+    public String getLocaleDisplayPattern() {
+      if (bundle == null) {
+        bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(
+                        ICUResourceBundle.ICU_BASE_NAME, ULocale.getDefault());
+      }
+      ICUResourceBundle locDispBundle = (ICUResourceBundle) bundle.get(LOCALE_DISPLAY_PATTERN);
+      String localeDisplayPattern = locDispBundle.getStringWithFallback(PATTERN);
+      return localeDisplayPattern;
+    }
+    
+    /**
+     * Returns LocaleDisplaySeparator for this locale.
+     * @return locale display separator as a char.
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */ 
+    public String getLocaleSeparator() {
+      if (bundle == null) {
+        bundle = (ICUResourceBundle)UResourceBundle.getBundleInstance(
+                        ICUResourceBundle.ICU_BASE_NAME, ULocale.getDefault());
+      }
+      ICUResourceBundle locDispBundle = (ICUResourceBundle) bundle.get(LOCALE_DISPLAY_PATTERN);
+      String  localeSeparator = locDispBundle.getStringWithFallback(SEPARATOR);
+      return localeSeparator;
+    }
+    
+    private static VersionInfo gCLDRVersion = null;
+    
+    /**
+     * Returns the current CLDR version
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static VersionInfo getCLDRVersion() {
+        // fetching this data should be idempotent.
+        if(gCLDRVersion == null) {
+            // from ZoneMeta.java
+            UResourceBundle supplementalDataBundle = UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, "supplementalData", ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+            UResourceBundle cldrVersionBundle = supplementalDataBundle.get("cldrVersion");
+            gCLDRVersion = VersionInfo.getInstance(cldrVersionBundle.getString());
+        }
+        return gCLDRVersion;
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/util/LocaleMatcher.java b/main/classes/core/src/com/ibm/icu/util/LocaleMatcher.java
new file mode 100644
index 0000000..7c4dcd5
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/LocaleMatcher.java
@@ -0,0 +1,622 @@
+/*
+ ****************************************************************************************
+ * Copyright (C) 2009, Google, Inc.; International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                         *
+ ****************************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import com.ibm.icu.impl.Row;
+import com.ibm.icu.impl.Row.R2;
+import com.ibm.icu.impl.Row.R3;
+
+/**
+ * Provides a way to match the languages (locales) supported by a product to the
+ * languages (locales) acceptable to a user, and get the best match. For
+ * example:
+ * 
+ * <pre>
+ * LanguageMatcher matcher = new StandardLanguageMatcher(&quot;fr, en-GB, en&quot;);
+ * 
+ * // afterwards:
+ * matcher.getBestMatch(LanguageCode.US).first == LanguageCode.ENGLISH
+ * </pre>
+ * 
+ * It takes into account when languages are close to one another, such as fil
+ * and tl, and when language regional variants are close, like en-GB and en-AU.
+ * It also handles scripts, like zh-Hant vs zh-TW. For examples, see the test
+ * file.
+ * <p>All classes implementing this interface should be immutable. Often a
+ * product will just need one static instance, built with the languages
+ * that it supports. However, it may want multiple instances with different
+ * default languages based on additional information, such as the domain.
+ * 
+ * @author markdavis@google.com
+ * @draft ICU 4.4
+ */
+public class LocaleMatcher {
+    private static final boolean DEBUG = false;
+
+    /**
+     * Threshold for falling back to the default (first) language. May make this
+     * a parameter in the future.
+     */
+    private static final double DEFAULT_THRESHOLD = 0.5;
+
+    /**
+     * The default language, in case the threshold is not met.
+     */
+    private final ULocale defaultLanguage;
+
+    /**
+     * Create a new language matcher. The highest-weighted language is the
+     * default. That means that if no other language is matches closer than a given
+     * threshold, that default language is chosen. Typically the default is English,
+     * but it could be different based on additional information, such as the domain
+     * of the page.
+     * 
+     * @param languagePriorityList weighted list
+     */
+    public LocaleMatcher(LocalePriorityList languagePriorityList) {
+        this(languagePriorityList, defaultWritten);
+    }
+
+    /**
+     * Create a new language matcher from a String form. The highest-weighted
+     * language is the default.
+     * 
+     * @param languagePriorityListString String form of LanguagePriorityList
+     */
+    public LocaleMatcher(String languagePriorityListString) {
+        this(LocalePriorityList.add(languagePriorityListString).build());
+    }
+
+    /**
+     * Internal testing function; may expose API later.
+     * @internal
+     * @param languagePriorityList LocalePriorityList to match
+     * @param matcherData Internal matching data
+     */
+    public LocaleMatcher(LocalePriorityList languagePriorityList, LanguageMatcherData matcherData) {
+        this.matcherData = matcherData;
+        for (final ULocale language : languagePriorityList) {
+            add(language, languagePriorityList.getWeight(language));
+        }
+        Iterator<ULocale> it = languagePriorityList.iterator();
+        defaultLanguage = it.hasNext() ? it.next() : null;
+    }
+
+
+    /**
+     * Returns a fraction between 0 and 1, where 1 means that the languages are a
+     * perfect match, and 0 means that they are completely different. Note that
+     * the precise values may change over time; no code should be made dependent
+     * on the values remaining constant.
+     * @param desired Desired locale
+     * @param desiredMax Maximized locale (using likely subtags)
+     * @param supported Supported locale
+     * @param supportedMax Maximized locale (using likely subtags)
+     * @return value between 0 and 1, inclusive.
+     */
+    public double match(ULocale desired, ULocale desiredMax, ULocale supported, ULocale supportedMax) {
+        return matcherData.match(desired, desiredMax, supported, supportedMax);
+    }
+
+
+    /**
+     * Canonicalize a locale (language). Note that for now, it is canonicalizing according to CLDR conventions (he vs iw, etc), since that is what is needed for likelySubtags.
+     * TODO Get the data from CLDR, use Java conventions.
+     * @param ulocale language/locale code
+     * @return ULocale with remapped subtags.
+     */
+    public ULocale canonicalize(ULocale ulocale) {
+        String lang = ulocale.getLanguage();
+        String lang2 = canonicalMap.get(lang);
+        String script = ulocale.getScript();
+        String script2 = canonicalMap.get(script);
+        String region = ulocale.getCountry();
+        String region2 = canonicalMap.get(region);
+        if (lang2 != null || script2 != null || region2 != null) {
+            return new ULocale(
+                    lang2 == null ? lang : lang2,
+                            script2 == null ? script : script2,
+                                    region2 == null ? region : region2
+            );
+        }
+        return ulocale;
+    }
+
+    /**
+     * Get the best match for a LanguagePriorityList
+     * 
+     * @param languageList list to match
+     * @return best matching language code
+     */
+    public ULocale getBestMatch(LocalePriorityList languageList) {
+        double bestWeight = 0;
+        ULocale bestTableMatch = null;
+        for (final ULocale language : languageList) {
+            final Row.R2<ULocale, Double> matchRow = getBestMatchInternal(language);
+            final double weight = matchRow.get1() * languageList.getWeight(language);
+            if (weight > bestWeight) {
+                bestWeight = weight;
+                bestTableMatch = matchRow.get0();
+            }
+        }
+        if (bestWeight < DEFAULT_THRESHOLD) {
+            bestTableMatch = defaultLanguage;
+        }
+        return bestTableMatch;
+    }
+
+    /**
+     * Convenience method: Get the best match for a LanguagePriorityList
+     * 
+     * @param languageList String form of language priority list
+     * @return best matching language code
+     */
+    public ULocale getBestMatch(String languageList) {
+        return getBestMatch(LocalePriorityList.add(languageList).build());
+    }
+
+    /**
+     * Get the best match for an individual language code.
+     * 
+     * @param ulocale locale/language code to match
+     * @return best matching language code
+     */
+    public ULocale getBestMatch(ULocale ulocale) {
+        return getBestMatchInternal(ulocale).get0();
+    }
+
+    @Override
+    public String toString() {
+        return "{" + defaultLanguage + ", " 
+        + maximizedLanguageToWeight + "}";
+    }
+    // ================= Privates =====================
+
+    /**
+     * Get the best match for an individual language code.
+     * 
+     * @param languageCode
+     * @return best matching language code and weight (as per
+     *         {@link #match(ULocale, ULocale)})
+     */
+    private Row.R2<ULocale, Double> getBestMatchInternal(ULocale languageCode) {
+        languageCode = canonicalize(languageCode);
+        final ULocale maximized = addLikelySubtags(languageCode);
+        if (DEBUG) {
+            System.out.println("\n" + languageCode + ";\t" + maximized);
+        }
+        double bestWeight = 0;
+        ULocale bestTableMatch = null;
+        for (final ULocale tableKey : maximizedLanguageToWeight.keySet()) {
+            R2<ULocale, Double> row = maximizedLanguageToWeight.get(tableKey);
+            final double match = match(languageCode, maximized, tableKey, row.get0());
+            if (DEBUG) {
+                System.out.println("\t" + tableKey + ";\t" + row.toString() + ";\t" + match);
+            }
+            final double weight = match * row.get1();
+            if (weight > bestWeight) {
+                bestWeight = weight;
+                bestTableMatch = tableKey;
+            }
+        }
+        if (bestWeight < DEFAULT_THRESHOLD) {
+            bestTableMatch = defaultLanguage;
+        }
+        return Row.R2.of(bestTableMatch, bestWeight);
+    }
+
+    private void add(ULocale language, Double weight) {
+        language = canonicalize(language);
+        R2<ULocale, Double> row = Row.of(addLikelySubtags(language), weight);
+        maximizedLanguageToWeight.put(language, row);
+    }
+
+    Map<ULocale,Row.R2<ULocale, Double>> maximizedLanguageToWeight = new LinkedHashMap<ULocale, R2<ULocale, Double>>();
+
+
+    // =============== Special Mapping Information ==============
+
+    /**
+     * We need to add another method to addLikelySubtags that doesn't return
+     * null, but instead substitutes Zzzz and ZZ if unknown. There are also
+     * a few cases where addLikelySubtags needs to have expanded data, to handle
+     * all deprecated codes, and to update to CLDR 1.6.
+     * @param languageCode
+     * @return "fixed" addLikelySubtags
+     */
+    // TODO(markdavis): update the above when CLDR 1.6 is final.
+    private ULocale addLikelySubtags(ULocale languageCode) {
+        final ULocale result = ULocale.addLikelySubtags(languageCode);
+        // should have method on getLikelySubtags for this
+        if (result == null || result.equals(languageCode)) {
+            final String language = languageCode.getLanguage();
+            final String script = languageCode.getScript();
+            final String region = languageCode.getCountry();
+            return new ULocale((language.length()==0 ? "und"
+                    : language)
+                    + "_"
+                    + (script.length()==0 ? "Zzzz" : script)
+                    + "_"
+                    + (region.length()==0 ? "ZZ" : region));
+        }
+        return result;
+    }
+
+    private static class LocalePatternMatcher {
+        // a value of null means a wildcard; matches any.
+        private String lang;
+        private String script;
+        private String region;
+        private Level level;
+        static Pattern pattern = Pattern.compile(
+                "([a-zA-Z]{1,8}|\\*)" +
+                "(?:-([a-zA-Z]{4}|\\*))?" +
+        "(?:-([a-zA-Z]{2}|[0-9]{3}|\\*))?");
+
+        public LocalePatternMatcher(String toMatch) {
+            Matcher matcher = pattern.matcher(toMatch);
+            if (!matcher.matches()) {
+                throw new IllegalArgumentException("Bad pattern: " + toMatch);
+            }
+            lang = matcher.group(1);
+            script = matcher.group(2);
+            region = matcher.group(3);
+            level = region != null ? Level.region : script != null ? Level.script : Level.language;
+
+            if (lang.equals("*")) {
+                lang = null;
+            }
+            if (script != null && script.equals("*")) {
+                script = null;
+            }
+            if (region != null && region.equals("*")) {
+                region = null;
+            }
+        }
+
+        boolean matches(ULocale ulocale) {
+            if (lang != null && !lang.equals(ulocale.getLanguage())) {
+                return false;
+            }
+            if (script != null && !script.equals(ulocale.getScript())) {
+                return false;
+            }
+            if (region != null && !region.equals(ulocale.getCountry())) {
+                return false;
+            }
+            return true;
+        }
+
+        public Level getLevel() {
+            return level;
+        }
+
+        public String getLanguage() {
+            return (lang == null ? "*" : lang);
+        }
+
+        public String getScript() {
+            return (script == null ? "*" : script);
+        }
+
+        public String getRegion() {
+            return (region == null ? "*" : region);
+        }
+
+        public String toString() {
+            String result = getLanguage();
+            if (level != Level.language) {
+                result += "-" + getScript();
+                if (level != Level.script) {
+                    result += "-" + getRegion();
+                }
+            }
+            return result;
+        }
+    }
+
+    enum Level {language, script, region}
+
+    private static class ScoreData implements Freezable<ScoreData> {
+        LinkedHashSet<Row.R3<LocalePatternMatcher,LocalePatternMatcher,Double>> scores = new LinkedHashSet<R3<LocalePatternMatcher, LocalePatternMatcher, Double>>();
+        final double worst;
+        final Level level;
+
+        public ScoreData(Level level) {
+            this.level = level;
+            this.worst = (1-(level == Level.language ? 90 : level == Level.script ? 20 : 4))/100.0;
+        }
+
+        void addDataToScores(String desired, String supported, R3<LocalePatternMatcher,LocalePatternMatcher,Double> data) {
+            //            Map<String, Set<R3<LocalePatternMatcher,LocalePatternMatcher,Double>>> lang_result = scores.get(desired);
+            //            if (lang_result == null) {
+            //                scores.put(desired, lang_result = new HashMap());
+            //            }
+            //            Set<R3<LocalePatternMatcher,LocalePatternMatcher,Double>> result = lang_result.get(supported);
+            //            if (result == null) {
+            //                lang_result.put(supported, result = new LinkedHashSet());
+            //            }
+            //            result.add(data);
+            scores.add(data);
+        }
+
+        double getScore(ULocale desiredLocale, ULocale dMax, String desiredRaw, String desiredMax, 
+                ULocale supportedLocale, ULocale sMax, String supportedRaw, String supportedMax) {
+
+            /*
+             * d, dm, s, sm
+             * dc = d != dm
+             * sc = s != sm
+             * if dm != sm
+             *   rd = rd(dm,sm) // line 4
+             *   if dc != sc
+             *     rd *= 0.75 // lines 3,8
+             *   ef dc
+             *     rd *= 0.5 // lines 7
+             *   end
+             *  ef dc == sc
+             *   rd = 0 // line 6
+             *  else
+             *   rd = 0.25*StdRDiff // lines 2,5
+             */
+
+            boolean desiredChange = desiredRaw.equals(desiredMax);
+            boolean supportedChange = supportedRaw.equals(supportedMax);
+            double distance;
+            if (!desiredMax.equals(supportedMax)) {
+                //                Map<String, Set<R3<LocalePatternMatcher,LocalePatternMatcher,Double>>> lang_result = scores.get(desiredMax);
+                //                if (lang_result == null) {
+                //                    distance = worst;
+                //                } else {
+                //                    Set<R3<LocalePatternMatcher,LocalePatternMatcher,Double>> result = lang_result.get(supportedMax);
+                //                    skip:
+                //                    if (result == null) {
+                //                        distance = worst;
+                //                    } else {
+                distance = getRawScore(dMax, sMax);
+                //                }
+                if (desiredChange == supportedChange) {
+                    distance *= 0.75;
+                } else if (desiredChange) {
+                    distance *= 0.5;
+                }
+            } else if (desiredChange == supportedChange) { // maxes are equal, changes are equal
+                distance = 0;
+            } else { // maxes are equal, changes are different
+                distance = 0.25*worst;
+            }
+            return distance;
+        }
+
+        private double getRawScore(ULocale desiredLocale, ULocale supportedLocale) {
+            if (DEBUG) {
+                System.out.println("\t\t\tRaw Score:\t" + desiredLocale + ";\t" + supportedLocale);
+            }
+            for (R3<LocalePatternMatcher,LocalePatternMatcher,Double> datum : scores) { // : result
+                if (datum.get0().matches(desiredLocale) 
+                        && datum.get1().matches(supportedLocale)) {
+                    if (DEBUG) {
+                        System.out.println("\t\t\tFOUND\t" + datum);
+                    }
+                    return datum.get2();
+                }
+            }
+            if (DEBUG) {
+                System.out.println("\t\t\tNOTFOUND\t" + worst);
+            }
+            return worst;
+        }
+
+        public String toString() {
+            return level + ", " + scores;
+        }
+
+        @SuppressWarnings("unchecked")
+        public ScoreData cloneAsThawed() {
+            try {
+                ScoreData result = (ScoreData) clone();
+                result.scores = (LinkedHashSet<R3<LocalePatternMatcher, LocalePatternMatcher, Double>>) result.scores.clone();
+                result.frozen = false;
+                return result;
+            } catch (CloneNotSupportedException e) {
+                throw new IllegalArgumentException(e); // will never happen
+            }
+
+        }
+
+        private boolean frozen = false;
+
+        public ScoreData freeze() {
+            return this;
+        }
+
+        public boolean isFrozen() {
+            return frozen;
+        }
+    }
+
+    /**
+     * Only for testing and use by tools. Interface may change!!
+     * @internal
+     */
+    public static class LanguageMatcherData implements Freezable<LanguageMatcherData> {
+        ScoreData languageScores = new ScoreData(Level.language);
+        ScoreData scriptScores = new ScoreData(Level.script);
+        ScoreData regionScores = new ScoreData(Level.region);
+
+        public double match(ULocale a, ULocale aMax, ULocale b, ULocale bMax) {
+            double diff = 0;
+            diff += languageScores.getScore(a, aMax, a.getLanguage(), aMax.getLanguage(), b, bMax, b.getLanguage(), bMax.getLanguage());
+            diff += scriptScores.getScore(a, aMax, a.getScript(), aMax.getScript(), b, bMax, b.getScript(), bMax.getScript());
+            diff += regionScores.getScore(a, aMax, a.getCountry(), aMax.getCountry(), b, bMax, b.getCountry(), bMax.getCountry());
+
+            if (!a.getVariant().equals(b.getVariant())) {
+                diff += 1;
+            }
+            if (diff < 0.0d) {
+                diff = 0.0d;
+            } else if (diff > 1.0d) {
+                diff = 1.0d;
+            }
+            return 1.0 - diff;
+        }
+
+
+        /**
+         * Add an exceptional distance between languages, typically because regional
+         * dialects were given their own language codes. At this point the code is
+         * symmetric. We don't bother producing an equivalence class because there are
+         * so few cases; this function depends on the other permutations being
+         * added specifically.
+         * @param desired
+         * @param supported
+         * @param distance
+         * @param bidirectional TODO
+         * @return 
+         */
+        private LanguageMatcherData addDistance(String desired, String supported, int percent) {
+            return addDistance(desired, supported, percent, false, null);
+        }
+        public LanguageMatcherData addDistance(String desired, String supported, int percent, String comment) {
+            return addDistance(desired, supported, percent, false, comment);
+        }
+
+        public LanguageMatcherData addDistance(String desired, String supported, int percent, boolean oneway) {
+            return addDistance(desired, supported, percent, oneway, null);
+        }
+
+        private LanguageMatcherData addDistance(String desired, String supported, int percent, boolean oneway, String comment) {
+            if (DEBUG) {
+                System.out.println("\t<languageMatch desired=\"" + desired + "\"" +
+                        " supported=\"" + supported + "\"" +
+                        " percent=\"" + percent + "\""
+                        + (oneway ? " oneway=\"true\"" : "")
+                        + "/>"
+                        + (comment == null ? "" : "\t<!-- " + comment + " -->"));
+                //                    //     .addDistance("nn", "nb", 4, true)
+                //                        System.out.println(".addDistance(\"" + desired + "\"" +
+                //                                ", \"" + supported + "\"" +
+                //                                ", " + percent + ""
+                //                                + (oneway ? "" : ", true")
+                //                                + (comment == null ? "" : ", \"" + comment + "\"")
+                //                                + ")"
+                //                        );
+
+            }
+            double score = 1-percent/100.0; // convert from percentage
+            LocalePatternMatcher desiredMatcher = new LocalePatternMatcher(desired);
+            Level desiredLen = desiredMatcher.getLevel();
+            LocalePatternMatcher supportedMatcher = new LocalePatternMatcher(supported);
+            Level supportedLen = supportedMatcher.getLevel();
+            if (desiredLen != supportedLen) {
+                throw new IllegalArgumentException();
+            }
+            R3<LocalePatternMatcher,LocalePatternMatcher,Double> data = Row.of(desiredMatcher, supportedMatcher, score);
+            R3<LocalePatternMatcher,LocalePatternMatcher,Double> data2 = oneway ? null : Row.of(supportedMatcher, desiredMatcher, score);
+            switch (desiredLen) {
+            case language:
+                String dlanguage = desiredMatcher.getLanguage();
+                String slanguage = supportedMatcher.getLanguage();
+                languageScores.addDataToScores(dlanguage, slanguage, data);
+                if (!oneway) {
+                    languageScores.addDataToScores(slanguage, dlanguage, data2);
+                }
+                break;
+            case script:
+                String dscript = desiredMatcher.getScript();
+                String sscript = supportedMatcher.getScript();
+                scriptScores.addDataToScores(dscript, sscript, data);
+                if (!oneway) {
+                    scriptScores.addDataToScores(sscript, dscript, data2);
+                }
+                break;
+            case region:
+                String dregion = desiredMatcher.getRegion();
+                String sregion = supportedMatcher.getRegion();
+                regionScores.addDataToScores(dregion, sregion, data);
+                if (!oneway) {
+                    regionScores.addDataToScores(sregion, dregion, data2);
+                }
+                break;
+            }
+            return this;
+        }
+
+        /* (non-Javadoc)
+         * @see com.ibm.icu.util.Freezable#cloneAsThawed()
+         */
+        public LanguageMatcherData cloneAsThawed() {
+            LanguageMatcherData result;
+            try {
+                result = (LanguageMatcherData) clone();
+                result.languageScores = languageScores.cloneAsThawed();
+                result.scriptScores = scriptScores.cloneAsThawed();
+                result.regionScores = regionScores.cloneAsThawed();
+                result.frozen = false;
+                return result;
+            } catch (CloneNotSupportedException e) {
+                throw new IllegalArgumentException(e); // will never happen
+            }
+        }
+
+        private boolean frozen = false;
+
+        public LanguageMatcherData freeze() {
+            return this;
+        }
+
+        public boolean isFrozen() {
+            return frozen;
+        }
+    }
+
+    LanguageMatcherData matcherData;
+
+    private static LanguageMatcherData defaultWritten = new LanguageMatcherData()
+    // TODO get data from CLDR
+    .addDistance("no", "nb", 100, "The language no is normally taken as nb in content; we might alias this for lookup.")
+    .addDistance("nn", "nb", 96)
+    .addDistance("nn", "no", 96)
+    .addDistance("da", "no", 90, "Danish and norwegian are reasonably close.")
+    .addDistance("da", "nb", 90)
+    .addDistance("hr", "br", 96, "Serbo-croatian variants are all very close.")
+    .addDistance("sh", "br", 96)
+    .addDistance("sr", "br", 96)
+    .addDistance("sh", "hr", 96)
+    .addDistance("sr", "hr", 96)
+    .addDistance("sh", "sr", 96)
+    .addDistance("sr-Latn", "sr-Cyrl", 90, "Most serbs can read either script.")
+    .addDistance("*-Hans", "*-Hant", 85, true, "Readers of simplified can read traditional much better than reverse.")
+    .addDistance("*-Hant", "*-Hans", 75, true)
+    .addDistance("en-*-US", "en-*-CA", 98, "US is different than others, and Canadian is inbetween.")
+    .addDistance("en-*-US", "en-*-*", 97)
+    .addDistance("en-*-CA", "en-*-*", 98)
+    .addDistance("en-*-*", "en-*-*", 99)
+    .addDistance("es-*-ES", "es-*-ES", 100, "Latin American Spanishes are closer to each other. Approximate by having es-ES be further from everything else.")
+    .addDistance("es-*-ES", "es-*-*", 93)
+    .addDistance("*", "*", 1, "[Default value -- must be at end!] Normally there is no comprehension of different languages.")
+    .addDistance("*-*", "*-*", 20, "[Default value -- must be at end!] Normally there is little comprehension of different scripts.")
+    .addDistance("*-*-*", "*-*-*", 96, "[Default value -- must be at end!] Normally there are small differences across regions.")
+    .freeze();
+
+    private static HashMap<String,String> canonicalMap = new HashMap<String, String>();
+
+    static {
+        // TODO get data from CLDR
+        canonicalMap.put("iw", "he");
+        canonicalMap.put("mo", "ro");
+        canonicalMap.put("tl", "fil");
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/util/LocalePriorityList.java b/main/classes/core/src/com/ibm/icu/util/LocalePriorityList.java
new file mode 100644
index 0000000..278fc1cc
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/LocalePriorityList.java
@@ -0,0 +1,296 @@
+/*
+ ****************************************************************************************
+ * Copyright (C) 2009, Google, Inc.; International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                         *
+ ****************************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import com.ibm.icu.util.ULocale;
+
+/**
+ * Provides an immutable list of languages (locales) in priority order.
+ * The string format is based on the Accept-Language format 
+ * {@link "http://www.ietf.org/rfc/rfc2616.txt"}, such as 
+ * "af, en, fr;q=0.9". Syntactically it is slightly
+ * more lenient, in allowing extra whitespace between elements, extra commas,
+ * and more than 3 decimals (on input), and pins between 0 and 1.
+ * <p>In theory, Accept-Language indicates the relative 'quality' of each item,
+ * but in practice, all of the browsers just take an ordered list, like 
+ * "en, fr, de", and synthesize arbitrary quality values that put these in the
+ * right order, like: "en, fr;q=0.7, de;q=0.3". The quality values in these de facto
+ * semantics thus have <b>nothing</b> to do with the relative qualities of the
+ * original. Accept-Language also doesn't
+ * specify the interpretation of multiple instances, eg what "en, fr, en;q=.5"
+ * means.
+ * <p>There are various ways to build a LanguagePriorityList, such
+ * as using the following equivalent patterns:
+ * 
+ * <pre>
+ * list = LanguagePriorityList.add(&quot;af, en, fr;q=0.9&quot;).build();
+ * 
+ * list2 = LanguagePriorityList
+ *  .add(ULocale.forString(&quot;af&quot;))
+ *  .add(ULocale.ENGLISH)
+ *  .add(ULocale.FRENCH, 0.9d)
+ *  .build();
+ * </pre>
+ * When the list is built, the internal values are sorted in descending order by
+ * weight, and then by input order. That is, if two languages have the same weight, the first one in the original order
+ * comes first. If exactly the same language tag appears multiple times,
+ * the last one wins. 
+ * 
+ * There are two options when building. If preserveWeights are on, then "de;q=0.3, ja;q=0.3, en, fr;q=0.7, de " would result in the following:
+ * <pre> en;q=1.0
+ * de;q=1.0
+ * fr;q=0.7
+ * ja;q=0.3</pre>
+ * If it is off (the default), then all weights are reset to 1.0 after reordering. 
+ * This is to match the effect of the Accept-Language semantics as used in browsers, and results in the following:
+ *  * <pre> en;q=1.0
+ * de;q=1.0
+ * fr;q=1.0
+ * ja;q=1.0</pre>
+ * @author markdavis@google.com
+ */
+public class LocalePriorityList implements Iterable<ULocale> {
+    private static final double D0 = 0.0d;
+    private static final Double D1 = 1.0d;
+
+    private static final Pattern languageSplitter = Pattern.compile("\\s*,\\s*");
+    private static final Pattern weightSplitter = Pattern
+    .compile("\\s*(\\S*)\\s*;\\s*q\\s*=\\s*(\\S*)");
+    private final Map<ULocale, Double> languagesAndWeights;
+
+    /**
+     * Add a language code to the list being built, with weight 1.0.
+     * 
+     * @param languageCode locale/language to be added
+     * @return internal builder, for chaining
+     */
+    public static LanguagePriorityListBuilder add(ULocale languageCode) {
+        return new LanguagePriorityListBuilder().add(languageCode);
+    }
+
+    /**
+     * Add a language code to the list being built, with specified weight.
+     * 
+     * @param languageCode locale/language to be added
+     * @param weight value from 0.0 to 1.0
+     * @return internal builder, for chaining
+     */
+    public static LanguagePriorityListBuilder add(ULocale languageCode, final double weight) {
+        return new LanguagePriorityListBuilder().add(languageCode, weight);
+    }
+
+    /**
+     * Add a language priority list.
+     * 
+     * @param languagePriorityList list to add all the members of
+     * @return internal builder, for chaining
+     */
+    public static LanguagePriorityListBuilder add(LocalePriorityList languagePriorityList) {
+        return new LanguagePriorityListBuilder().add(languagePriorityList);
+    }
+
+    /**
+     * Add language codes to the list being built, using a string in rfc2616
+     * (lenient) format, where each language is a valid {@link ULocale}.
+     * 
+     * @param acceptLanguageString String in rfc2616 format (but leniently parsed)
+     * @return internal builder, for chaining
+     */
+    public static LanguagePriorityListBuilder add(String acceptLanguageString) {
+        return new LanguagePriorityListBuilder().add(acceptLanguageString);
+    }
+
+    /**
+     * Return the weight for a given language, or null if there is none. Note that
+     * the weights may be adjusted from those used to build the list.
+     * 
+     * @param language to get weight of
+     * @return weight
+     */
+    public Double getWeight(ULocale language) {
+        return languagesAndWeights.get(language);
+    }
+
+    @Override
+    public String toString() {
+        final StringBuilder result = new StringBuilder();
+        for (final ULocale language : languagesAndWeights.keySet()) {
+            if (result.length() != 0) {
+                result.append(", ");
+            }
+            result.append(language);
+            double weight = languagesAndWeights.get(language);
+            if (weight != D1) {
+                result.append(";q=").append(weight);
+            }
+        }
+        return result.toString();
+    }
+
+    public Iterator<ULocale> iterator() {
+        return languagesAndWeights.keySet().iterator();
+    }
+
+    @Override
+    public boolean equals(final Object o) {
+        try {
+            final LocalePriorityList that = (LocalePriorityList) o;
+            return languagesAndWeights.equals(that.languagesAndWeights);
+        } catch (final RuntimeException e) {
+            return false;
+        }
+    }
+
+    @Override
+    public int hashCode() {
+        return languagesAndWeights.hashCode();
+    }
+
+    // ==================== Privates ====================
+
+
+    private LocalePriorityList(final Map<ULocale, Double> languageToWeight) {
+        this.languagesAndWeights = languageToWeight;
+    }
+
+    /**
+     * Internal class used for building LanguagePriorityLists
+     * @internal
+     */
+    public static class LanguagePriorityListBuilder {
+        /**
+         * These store the input languages and weights, in chronological order,
+         * where later additions override previous ones.
+         */
+        private final Map<ULocale, Double> languageToWeight 
+        = new LinkedHashMap<ULocale, Double>();
+
+        public LocalePriorityList build() {
+            return build(false);
+        }
+
+        public LocalePriorityList build(boolean preserveWeights) {
+            // Walk through the input list, collecting the items with the same weights.
+            final Map<Double, Set<ULocale>> doubleCheck = new TreeMap<Double, Set<ULocale>>(
+                    myDescendingDouble);
+            for (final ULocale lang : languageToWeight.keySet()) {
+                Double weight = languageToWeight.get(lang);
+                Set<ULocale> s = doubleCheck.get(weight);
+                if (s == null) {
+                    doubleCheck.put(weight, s = new LinkedHashSet<ULocale>());
+                }
+                s.add(lang);
+            }
+            // We now have a bunch of items sorted by weight, then chronologically.
+            // We can now create a list in the right order
+            final Map<ULocale, Double> temp = new LinkedHashMap<ULocale, Double>();
+            for (final Double weight : doubleCheck.keySet()) {
+                for (final ULocale lang : doubleCheck.get(weight)) {
+                    temp.put(lang, preserveWeights ? weight : D1);
+                }
+            }
+            return new LocalePriorityList(Collections.unmodifiableMap(temp));
+        }
+
+        public LanguagePriorityListBuilder add(
+                final LocalePriorityList languagePriorityList) {
+            for (final ULocale language : languagePriorityList.languagesAndWeights
+                    .keySet()) {
+                add(language, languagePriorityList.languagesAndWeights.get(language));
+            }
+            return this;
+        }
+
+        /**
+         * Adds a new language code, with weight = 1.0.
+         * 
+         * @param languageCode to add with weight 1.0
+         * @return this, for chaining
+         */
+        public LanguagePriorityListBuilder add(final ULocale languageCode) {
+            return add(languageCode, D1);
+        }
+
+        /**
+         * Adds language codes, with each having weight = 1.0.
+         * 
+         * @param languageCodes List of language codes.
+         * @return this, for chaining.
+         */
+        public LanguagePriorityListBuilder add(ULocale... languageCodes) {
+            for (final ULocale languageCode : languageCodes) {
+                add(languageCode, D1);
+            }
+            return this;
+        }
+
+        /**
+         * Adds a new supported languageCode, with specified weight. Overrides any
+         * previous weight for the language.
+         * 
+         * @param languageCode language/locale to add
+         * @param weight value between 0.0 and 1.1
+         * @return this, for chaining.
+         */
+        public LanguagePriorityListBuilder add(final ULocale languageCode,
+                double weight) {
+            if (languageToWeight.containsKey(languageCode)) {
+                languageToWeight.remove(languageCode);
+            }
+            if (weight <= D0) {
+                return this; // skip zeros
+            } else if (weight > D1) {
+                weight = D1;
+            }
+            languageToWeight.put(languageCode, weight);
+            return this;
+        }
+
+        /**
+         * Adds rfc2616 list.
+         * 
+         * @param acceptLanguageList in rfc2616 format
+         * @return this, for chaining.
+         */
+        public LanguagePriorityListBuilder add(final String acceptLanguageList) {
+            final String[] items = languageSplitter.split(acceptLanguageList.trim());
+            final Matcher itemMatcher = weightSplitter.matcher("");
+            for (final String item : items) {
+                if (itemMatcher.reset(item).matches()) {
+                    final ULocale language = new ULocale(itemMatcher.group(1));
+                    final double weight = Double.parseDouble(itemMatcher.group(2));
+                    if (!(weight >= D0 && weight <= D1)) { // do ! for NaN
+                        throw new IllegalArgumentException("Illegal weight, must be 0..1: "
+                                + weight);
+                    }
+                    add(language, weight);
+                } else if (item.length() != 0) {
+                    add(new ULocale(item));
+                }
+            }
+            return this;
+        }
+    }
+
+    private static Comparator<Double> myDescendingDouble = new Comparator<Double>() {
+        public int compare(Double o1, Double o2) {
+            return -o1.compareTo(o2);
+        }
+    };
+}
diff --git a/main/classes/core/src/com/ibm/icu/util/Measure.java b/main/classes/core/src/com/ibm/icu/util/Measure.java
new file mode 100644
index 0000000..996444c
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/Measure.java
@@ -0,0 +1,121 @@
+/*
+**********************************************************************
+* Copyright (c) 2004-2009, 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.
+     */
+    // TODO improve this to catch more cases (two different longs that have same double values, BigDecimals, etc)
+    private 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/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java b/main/classes/core/src/com/ibm/icu/util/MeasureUnit.java
new file mode 100644
index 0000000..2914750
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/OverlayBundle.java b/main/classes/core/src/com/ibm/icu/util/OverlayBundle.java
new file mode 100644
index 0000000..319c752
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/OverlayBundle.java
@@ -0,0 +1,176 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.util;
+
+import java.util.Enumeration;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * 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<String> 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/main/classes/core/src/com/ibm/icu/util/RangeDateRule.java b/main/classes/core/src/com/ibm/icu/util/RangeDateRule.java
new file mode 100644
index 0000000..1438a6b
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/RangeDateRule.java
@@ -0,0 +1,168 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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 = ranges.elementAt(i);
+            if (start.before(r.start)) {
+                break;
+            }
+            lastIndex = i;
+        }
+        return lastIndex;
+    }
+
+    private Range rangeAt(int index) {
+       return (index < ranges.size()) ? ranges.elementAt(index)
+                                      : null;
+    }
+
+    Vector<Range> ranges = new Vector<Range>(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/main/classes/core/src/com/ibm/icu/util/RangeValueIterator.java b/main/classes/core/src/com/ibm/icu/util/RangeValueIterator.java
new file mode 100644
index 0000000..28744c1
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/RuleBasedTimeZone.java b/main/classes/core/src/com/ibm/icu/util/RuleBasedTimeZone.java
new file mode 100644
index 0000000..7a42ec3
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/RuleBasedTimeZone.java
@@ -0,0 +1,690 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2009, 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.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<TimeZoneRule> historicRules;
+    private AnnualTimeZoneRule[] finalRules;
+
+    private transient List<TimeZoneTransition> 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<TimeZoneRule>();
+            }
+            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;
+            }
+            for (TimeZoneRule rule : historicRules) {
+                boolean foundSameRule = false;
+                for (TimeZoneRule orule : otherRBTZ.historicRules) {
+                    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] = 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 = historicTransitions.get(0);
+        long tt = tzt.getTime();
+        if (tt > base || (inclusive && tt == base)) {
+            result = tzt;
+        } else {
+            int idx = historicTransitions.size() - 1;        
+            tzt = 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 = 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 = 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 = 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 = 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 = new ArrayList<TimeZoneRule>(historicRules); // rules are immutable
+        }
+        if (finalRules != null) {
+            other.finalRules = 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 = 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<TimeZoneTransition>();
+                    }
+                    historicTransitions.add(new TimeZoneTransition(nextTransitionTime, curRule, nextRule));
+                    lastTransitionTime = nextTransitionTime;
+                    curRule = nextRule;
+                }
+            }
+            if (finalRules != null) {
+                if (historicTransitions == null) {
+                    historicTransitions = new ArrayList<TimeZoneTransition>();
+                }
+                // 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(historicTransitions.get(0),
+                    local, NonExistingTimeOpt, DuplicatedTimeOpt);
+            if (time < tstart) {
+                rule = initialRule;
+            } else {
+                int idx = historicTransitions.size() - 1;
+                long tend = getTransitionTime(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 = (historicTransitions.get(idx)).getTo();
+                    }
+                } else {
+                    // Find a historical transition
+                    while (idx >= 0) {
+                        if (time >= getTransitionTime(historicTransitions.get(idx),
+                                local, NonExistingTimeOpt, DuplicatedTimeOpt)) {
+                            break;
+                        }
+                        idx--;
+                    }
+                    rule = (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/main/classes/core/src/com/ibm/icu/util/STZInfo.java b/main/classes/core/src/com/ibm/icu/util/STZInfo.java
new file mode 100644
index 0000000..ac5340e
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/SimpleDateRule.java b/main/classes/core/src/com/ibm/icu/util/SimpleDateRule.java
new file mode 100644
index 0000000..82d6158
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/SimpleHoliday.java b/main/classes/core/src/com/ibm/icu/util/SimpleHoliday.java
new file mode 100644
index 0000000..e4176b8
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/SimpleTimeZone.java b/main/classes/core/src/com/ibm/icu/util/SimpleTimeZone.java
new file mode 100644
index 0000000..52905f1
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/SimpleTimeZone.java
@@ -0,0 +1,1328 @@
+ /*
+*   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, if Daylight Savings Time starts or ends at the last Sunday in a month,
+ * use <code>dayOfWeekInMonth = -1</code> along with <code>dayOfWeek = Calendar.SUNDAY</code>
+ * to specify the rule.
+ *
+ * @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 second Sunday in March, at 2 AM in standard time.
+     * Therefore, you can set the start rule by calling:
+     * setStartRule(Calendar.MARCH, 2, Calendar.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 second Sunday in March, at 2 AM in standard time.
+     * Therefore, you can set the start rule by calling:
+     * setStartRule(Calendar.MARCH, 2, Calendar.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, if Daylight Savings Time
+     * ends at the last (-1) Sunday in October, at 2 AM in standard time,
+     * you can set the end rule by calling:
+     * <code>setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2*60*60*1000);</code>
+     *
+     * @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 first Sunday in November, at 2 AM in standard time.
+     * Therefore, you can set the end rule by calling:
+     * setEndRule(Calendar.NOVEMBER, 1, Calendar.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();
+            }
+        } 
+        //Eclipse stated the following is "dead code"
+        /*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 = (startDay != 0) && (endDay != 0);
+        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 = -startDayOfWeek;
+                    if (startDay > 0) {
+                        startMode = DOW_GE_DOM_MODE;
+                    } else {
+                        startDay = -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 = (startDay != 0) && (endDay != 0);
+        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 = -endDayOfWeek;
+                    if (endDay > 0) {
+                        endMode = DOW_GE_DOM_MODE;
+                    } else {
+                        endDay = -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 = super.hashCode()
+                    + raw ^ (raw >>> 8)
+                    + (useDaylight ? 0 : 1);
+        if(!useDaylight){
+                ret += 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/main/classes/core/src/com/ibm/icu/util/StringTokenizer.java b/main/classes/core/src/com/ibm/icu/util/StringTokenizer.java
new file mode 100644
index 0000000..48d1982
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/StringTokenizer.java
@@ -0,0 +1,688 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2009, 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<Object>
+{
+    // 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 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 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 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 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 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 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 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/main/classes/core/src/com/ibm/icu/util/TaiwanCalendar.java b/main/classes/core/src/com/ibm/icu/util/TaiwanCalendar.java
new file mode 100644
index 0000000..2fef659
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/TimeArrayTimeZoneRule.java b/main/classes/core/src/com/ibm/icu/util/TimeArrayTimeZoneRule.java
new file mode 100644
index 0000000..dce438e
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/TimeArrayTimeZoneRule.java
@@ -0,0 +1,182 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2009, 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 = 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 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/main/classes/core/src/com/ibm/icu/util/TimeUnit.java b/main/classes/core/src/com/ibm/icu/util/TimeUnit.java
new file mode 100644
index 0000000..95a4bf5
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/TimeUnit.java
@@ -0,0 +1,60 @@
+/*
+ **************************************************************************
+ * Copyright (C) 2008-2009, 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
+ * @stable ICU 4.0
+ */
+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.
+     * @stable ICU 4.0
+     */
+    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
+     * @stable ICU 4.0
+     */
+    public static TimeUnit[] values() {
+        return values.clone();
+    }
+
+    /**
+     * A string representation for debugging.
+     * It is for debugging purpose. The value might change.
+     * Please do not count on the value.
+     * @stable ICU 4.0
+     */
+    public String toString() {
+        return name;
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/util/TimeUnitAmount.java b/main/classes/core/src/com/ibm/icu/util/TimeUnitAmount.java
new file mode 100644
index 0000000..00eaf7c
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/TimeUnitAmount.java
@@ -0,0 +1,42 @@
+/*
+ **************************************************************************
+ * Copyright (C) 2008-2009, 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
+ * @stable ICU 4.0
+ */
+public class TimeUnitAmount extends Measure {
+
+    /**
+     * Create from a number and unit.
+     * @stable ICU 4.0
+     */
+    public TimeUnitAmount(Number number, TimeUnit unit) {
+        super(number, unit);
+    }
+
+    /**
+     * Create from a number and unit.
+     * @stable ICU 4.0
+     */
+    public TimeUnitAmount(double number, TimeUnit unit) {
+        super(new Double(number), unit);
+    }
+
+    /**
+     * Get the unit (convenience to avoid cast).
+     * @stable ICU 4.0
+     */
+    public TimeUnit getTimeUnit() {
+        return (TimeUnit) getUnit();
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/util/TimeZone.java b/main/classes/core/src/com/ibm/icu/util/TimeZone.java
new file mode 100644
index 0000000..d623ba2
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/TimeZone.java
@@ -0,0 +1,943 @@
+/*
+ * @(#)TimeZone.java    1.51 00/01/19
+ *
+ * Copyright (C) 1996-2009, 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;
+import com.ibm.icu.impl.ICULogger;
+
+/**
+ * <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 initialization 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 {
+    /**
+     * A logger for TimeZone. Will be null if logging is not on by way of system property: "icu4j.debug.logging"
+     * @draft ICU 4.4
+     */
+    public static ICULogger TimeZoneLogger = ICULogger.getICULogger(TimeZone.class.getName());
+
+    // 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>.
+     * @stable ICU 4.0
+     */
+    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>.
+     * @stable ICU 4.0
+     */
+    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;
+
+    /**
+     * A style specifier for <code>getDisplayName()</code> indicating
+     * a short generic name, such as "PT."
+     * @see #LONG_GENERIC
+     * @draft ICU 4.4
+     */    
+    public static final int SHORT_GENERIC = 2;
+
+    /**
+     * A style specifier for <code>getDisplayName()</code> indicating
+     * a long generic name, such as "Pacific Time."
+     * @see #SHORT_GENERIC
+     * @draft ICU 4.4
+     */   
+    public static final int LONG_GENERIC = 3;
+
+    /**
+     * A style specifier for <code>getDisplayName()</code> indicating
+     * a short name derived from the timezone's offset, such as "-0800."
+     * @see #LONG_GMT
+     * @draft ICU 4.4
+     */       
+    public static final int SHORT_GMT = 4;
+    
+    /**
+     * A style specifier for <code>getDisplayName()</code> indicating
+     * a long name derived from the timezone's offset, such as "GMT-08:00."
+     * @see #SHORT_GMT
+     * @draft ICU 4.4
+     */      
+    public static final int LONG_GMT = 5;
+    
+    /**
+     * A style specifier for <code>getDisplayName()</code> indicating
+     * a short name derived from the timezone's short standard or daylight
+     * timezone name ignoring commonlyUsed, such as "PDT."
+     * @see #GENERIC_LOCATION
+     * @draft ICU 4.4
+     */   
+    
+    public static final int SHORT_COMMONLY_USED = 6;
+    
+    /**
+     * A style specifier for <code>getDisplayName()</code> indicating
+     * a long name derived from the timezone's fallback name, such as 
+     * "United States (Los Angeles)."
+     * @see #SHORT_COMMONLY_USED
+     * @draft ICU 4.4
+     */      
+    public static final int GENERIC_LOCATION = 7;
+    
+    
+    /**
+     * Cache to hold the SimpleDateFormat objects for a Locale.
+     */
+    private static ICUCache<ULocale, SimpleDateFormat> cachedLocaleData = new SimpleCache<ULocale, SimpleDateFormat>();
+
+    /**
+     * 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 the output style of the display name.  Valid styles are 
+     * <code>SHORT</code>, <code>LONG</code>, <code>SHORT_GENERIC</code>,
+     * <code>LONG_GENERIC</code>, <code>SHORT_GMT</code>, <code>LONG_GMT</code>,
+     * <code>SHORT_COMMONLY_USED</code> or <code>GENERIC_LOCATION</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 the output style of the display name.  Valid styles are 
+     * <code>SHORT</code>, <code>LONG</code>, <code>SHORT_GENERIC</code>,
+     * <code>LONG_GENERIC</code>, <code>SHORT_GMT</code>, <code>LONG_GMT</code>,
+     * <code>SHORT_COMMONLY_USED</code> or <code>GENERIC_LOCATION</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 the output style of the display name.  Valid styles are 
+     * <code>SHORT</code>, <code>LONG</code>, <code>SHORT_GENERIC</code>,
+     * <code>LONG_GENERIC</code>, <code>SHORT_GMT</code>, <code>LONG_GMT</code>,
+     * <code>SHORT_COMMONLY_USED</code> or <code>GENERIC_LOCATION</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 > GENERIC_LOCATION) {
+            throw new IllegalArgumentException("Illegal style: " + style);
+        }
+     
+        return _getDisplayName(daylight, style, locale);
+    }
+
+    /**
+     * internal version (which is called by public APIs) accepts  
+     * SHORT, LONG, SHORT_GENERIC, LONG_GENERIC, SHORT_GMT, LONG_GMT, 
+     * SHORT_COMMONLY_USED and GENERIC_LOCATION.
+     */
+    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 tmpfmt = cachedLocaleData.get(locale);
+        if (tmpfmt == null) {
+            format = new SimpleDateFormat(null, locale);
+            cachedLocaleData.put(locale, format);
+        } else {
+            format = (SimpleDateFormat)tmpfmt.clone();
+        }
+
+        String[] patterns = { "z", "zzzz", "v", "vvvv", "Z", "ZZZZ", "V", "VVVV" };
+        format.applyPattern(patterns[style]);
+        format.setTimeZone(this);
+        Date d = new Date();
+        if ((style == SHORT_GENERIC) || (style == LONG_GENERIC)) {
+            // 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
+                // or display name for daylight saving time was requested, but this zone no longer
+                // observes 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>, such as "America/Los_Angeles",
+     * or a custom ID such as "GMT-8:00". Note that the support of abbreviations,
+     * such as "PST", 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>, such as "America/Los_Angeles",
+     * or a custom ID such as "GMT-8:00". Note that the support of abbreviations,
+     * such as "PST", is for JDK 1.1.x compatibility only and full names should be used.
+     * @param type Time zone 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.
+     * @stable ICU 4.0
+     */
+    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) {
+                /* Log that timezone is using GMT if logging is on. */
+                if (TimeZoneLogger != null && TimeZoneLogger.isLoggingOn()) {
+                    TimeZoneLogger.warning("\"" +ID + "\" is a bogus id so timezone is falling back to GMT.");
+                }
+                result = ZoneMeta.getGMT();
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Sets the default time zone type used by <code>getTimeZone</code>.
+     * @param type time zone type, either <code>TIMEZONE_ICU</code> or <code>TIMEZONE_JDK</code>.
+     * @stable ICU 4.0
+     */
+    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 time zone type currently used.
+     * @return The default time zone type, either <code>TIMEZONE_ICU</code> or <code>TIMEZONE_JDK</code>.
+     * @stable ICU 4.0
+     */
+    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 time zone data version currently used by ICU.
+     * 
+     * @return the version string, such as "2007f"
+     * @throws MissingResourceException if ICU time zone 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_PATH, "zoneinfo");
+            TZDATA_VERSION = tzbundle.getString("TZVersion");
+        }
+        return TZDATA_VERSION;
+    }
+
+    /**
+     * Returns the canonical system time zone ID or the normalized
+     * custom time zone ID for the given time zone ID.
+     * @param id The input time zone ID to be canonicalized.
+     * @return The canonical system time zone ID or the custom time zone ID
+     * in normalized format for the given time zone ID.  When the given time zone ID
+     * is neither a known system time zone ID nor a valid custom time zone ID,
+     * null is returned.
+     * @stable ICU 4.0
+     */
+    public static String getCanonicalID(String id) {
+        return getCanonicalID(id, null);
+    }
+
+    /**
+     * Returns the canonical system time zone ID or the normalized
+     * custom time zone ID for the given time zone ID.
+     * @param id The input time zone ID to be canonicalized.
+     * @param isSystemID When non-null boolean array is specified and
+     * the given ID is a known system time zone ID, true is set to <code>isSystemID[0]</code>
+     * @return The canonical system time zone ID or the custom time zone ID
+     * in normalized format for the given time zone ID.  When the given time zone ID
+     * is neither a known system time zone ID nor a valid custom time zone ID,
+     * null is returned.
+     * @stable ICU 4.0
+     */
+    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/main/classes/core/src/com/ibm/icu/util/TimeZoneRule.java b/main/classes/core/src/com/ibm/icu/util/TimeZoneRule.java
new file mode 100644
index 0000000..8688a95
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/TimeZoneTransition.java b/main/classes/core/src/com/ibm/icu/util/TimeZoneTransition.java
new file mode 100644
index 0000000..1a7f304
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/ULocale.java b/main/classes/core/src/com/ibm/icu/util/ULocale.java
new file mode 100644
index 0000000..004ad26
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/ULocale.java
@@ -0,0 +1,4712 @@
+/*
+******************************************************************************
+* 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.Set;
+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;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.locale.AsciiUtil;
+import com.ibm.icu.impl.locale.BaseLocale;
+import com.ibm.icu.impl.locale.InternalLocaleBuilder;
+import com.ibm.icu.impl.locale.LanguageTag;
+import com.ibm.icu.impl.locale.LocaleExtensions;
+import com.ibm.icu.impl.locale.LocaleSyntaxException;
+import com.ibm.icu.impl.locale.LanguageTag.Extension;
+
+import com.ibm.icu.text.MessageFormat;
+
+/**
+ * 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<Locale, ULocale> CACHE = new SimpleCache<Locale, ULocale>();
+
+    /**
+     * 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",    "numbers",  "thai",     "th"},
+    };
+
+    /**
+     * 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 = 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<String, String> nameCache = new SimpleCache<String, String>();
+    /**
+     * 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 _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 _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 The locale identification string.
+     * @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 = 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<String> 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<String> 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 handle getDisplayLanguageWithDialect() functions and remember
+     * which fields got eaten.
+     */
+    private static final class DisplayLanguageResult {
+        String value;
+        boolean ateCountry = false;
+        boolean ateScript = false;
+    }
+ 
+    /**
+     * 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<String, String> 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 AsciiUtil.toLowerString(new String(id, start, index-start).trim());
+        }
+
+        private String getValue() {
+            int start = index;
+            while (!isDoneOrItemSeparator(next())) {
+            }
+            --index;
+            return new String(id, start, index-start).trim(); // leave case alone
+        }
+
+        private Comparator<String> getKeyComparator() {
+            final Comparator<String> comp = new Comparator<String>() {
+                    public int compare(String lhs, String rhs) {
+                        return lhs.compareTo(rhs);
+                    }
+                };
+            return comp;
+        }
+
+        /**
+         * Returns a map of the keywords and values, or null if there are none.
+         */
+        private Map<String, String> getKeywordMap() {
+            if (keywords == null) {
+                TreeMap<String, String> 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<String, String>(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.<String, String>emptyMap();
+            }
+
+            return keywords;
+        }
+
+
+        /**
+         * Parse the keywords and return start of the string in the buffer.
+         */
+        private int parseKeywords() {
+            int oldBlen = blen;
+            Map<String, String> m = getKeywordMap();
+            if (!m.isEmpty()) {
+                boolean first = true;
+                for (Map.Entry<String, String> e : m.entrySet()) {
+                    append(first ? KEYWORD_SEPARATOR : ITEM_SEPARATOR);
+                    first = false;
+                    append(e.getKey());
+                    append(KEYWORD_ASSIGN);
+                    append(e.getValue());
+                }
+                if (blen != oldBlen) {
+                    ++oldBlen;
+                }
+            }
+            return oldBlen;
+        }
+
+        /**
+         * Returns an iterator over the keywords, or null if we have an empty map.
+         */
+        public Iterator<String> getKeywords() {
+            Map<String, String> 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<String, String> m = getKeywordMap();
+            return m.isEmpty() ? null : m.get(AsciiUtil.toLowerString(keywordName.trim()));
+        }
+
+        /**
+         * 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.<String, String>emptyMap();
+                }
+            } else {
+                keywordName = AsciiUtil.toLowerString(keywordName.trim());
+                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<String, String> m = getKeywordMap();
+                if (m.isEmpty()) { // it is EMPTY_MAP
+                    if (value != null) {
+                        // force new map
+                        keywords = new TreeMap<String, String>(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.<String, String>emptyMap();
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * 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) {
+        try {
+            if (item.length() > 0) {
+                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);
+    } 
+    /**
+     * Returns this locale's language localized for display in the default locale.
+     * If a dialect name is present in the data, then it is returned.
+     * @return the localized language name.
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getDisplayLanguageWithDialect() {
+        return getDisplayLanguageWithDialectInternal(localeID, getDefault().localeID).value;
+    }
+
+    /**
+     * Returns this locale's language localized for display in the provided locale.
+     * If a dialect name is present in the data, then it is returned.
+     * @param displayLocale the locale in which to display the name.
+     * @return the localized language name.
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getDisplayLanguageWithDialect(ULocale displayLocale) {
+        return getDisplayLanguageWithDialectInternal(localeID, displayLocale.localeID).value;
+    }
+    
+    /**
+     * Returns a locale's language localized for display in the provided locale.
+     * If a dialect name is present in the data, then it is returned.
+     * 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.
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static String getDisplayLanguageWithDialect(String localeID, String displayLocaleID) {
+        return getDisplayLanguageWithDialectInternal(localeID, getName(displayLocaleID)).value;
+    }
+
+    /**
+     * Returns a locale's language localized for display in the provided locale.
+     * If a dialect name is present in the data, then it is returned.
+     * 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.
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static String getDisplayLanguageWithDialect(String localeID, ULocale displayLocale) {
+        return getDisplayLanguageWithDialectInternal(localeID, displayLocale.localeID).value;
+    } 
+
+    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);
+    }
+    
+    private static DisplayLanguageResult getDisplayLanguageWithDialectInternal(String localeID, String displayLocaleID) {
+        IDParser parser = new IDParser(localeID);
+        String[] names = parser.getLanguageScriptCountryVariant();
+
+        boolean hasScript = names[1].length() > 0;
+        boolean hasCountry = names[2].length() > 0;
+        DisplayLanguageResult dlr = new DisplayLanguageResult();
+        
+        if (hasScript && hasCountry) {
+            String langScriptCountry = names[0] + UNDERSCORE + names[1] + UNDERSCORE + names[2];
+            String result = getTableString("Languages", null, langScriptCountry, displayLocaleID);
+            if (!result.equals(langScriptCountry)) {
+                dlr.value = result;
+                dlr.ateScript = true;
+                dlr.ateCountry = true;
+                return dlr;
+            }
+        }
+        if (hasScript) {
+            String langScript = names[0] + UNDERSCORE + names[1];
+            String result = getTableString("Languages", null, langScript, displayLocaleID);
+            if (!result.equals(langScript)) {
+                dlr.value = result;
+                dlr.ateScript = true;
+                return dlr;
+            }
+        }
+        if (hasCountry) {
+            String langCountry = names[0] + UNDERSCORE + names[2];
+            String result = getTableString("Languages", null, langCountry, displayLocaleID);
+            if (!result.equals(langCountry)) {
+                dlr.value = result;
+                dlr.ateCountry = true;
+                return dlr;
+            }
+        }
+        
+        
+        dlr.value = getTableString("Languages", null, names[0], displayLocaleID);
+        return dlr;
+    }
+ 
+    /**
+     * 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, AsciiUtil.toLowerString(keyword.trim()), 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 = AsciiUtil.toLowerString(keyword.trim());
+        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 buf0 = new StringBuffer();
+        StringBuffer buf1 = new StringBuffer();
+
+        IDParser parser = new IDParser(localeID);
+        String[] names = parser.getLanguageScriptCountryVariant();
+        
+        for (int i = 0; i < names.length; ++i) {
+            String name = names[i];
+            if (name.length() > 0) {               
+                name = getTableString(tableNames[i], null, name, bundle);
+                if ( i == 0 ) {
+                    buf0.append(name);
+                } else {
+                    if (buf1.length() > 0) {
+                        try {
+                            buf1.append(bundle.get("localeDisplayPattern").getString("separator"));
+                        } catch ( MissingResourceException ex ) {
+                            buf1.append(", ");
+                        }
+                    }
+                    buf1.append(name);
+                }
+            }
+        }
+
+        Map<String, String> m = parser.getKeywordMap();
+        if (!m.isEmpty()) {
+            for (Map.Entry<String, String> e : m.entrySet()) {
+                if (buf1.length() > 0) {
+                    try {
+                        buf1.append(bundle.get("localeDisplayPattern").getString("separator"));
+                    } catch ( MissingResourceException ex ) {
+                        buf1.append(", ");
+                    }
+                }
+                String key = e.getKey();
+                buf1.append(getTableString("Keys", null, key, bundle));
+                buf1.append("=");
+                buf1.append(getTableString("Types", key, e.getValue(), bundle));
+            }
+        }
+
+        String locDispPattern;
+        try {
+           locDispPattern = bundle.get("localeDisplayPattern").getString("pattern");
+        } catch ( MissingResourceException ex ) {
+           locDispPattern = "{0} ({1})";
+        }
+
+        Object[] args = { (Object)buf0.toString() , (Object)buf1.toString() };
+        if ( buf0.length() > 0 && buf1.length() > 0 ) {
+            return MessageFormat.format(locDispPattern,args);
+        } else if ( buf0.length() > 0 ) {
+            return buf0.toString();
+        } else {
+            return buf1.toString();
+        }
+    }
+    
+    /**
+     * Returns this locale name localized for display in the default locale.
+     * If a dialect name is present in the locale data, then it is returned.
+     * @return the localized locale name.
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getDisplayNameWithDialect() {
+        return getDisplayNameWithDialectInternal(localeID, getDefault().localeID);
+    }
+    
+    /**
+     * Returns this locale name localized for display in the provided locale.
+     * If a dialect name is present in the locale data, then it is returned.
+     * @param displayLocale the locale in which to display the locale name.
+     * @return the localized locale name.
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getDisplayNameWithDialect(ULocale displayLocale) {
+        return getDisplayNameWithDialectInternal(localeID, displayLocale.localeID);
+    }
+    
+    /**
+     * Returns the locale ID localized for display in the provided locale.
+     * If a dialect name is present in the locale data, then it is returned.
+     * 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.
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static String getDisplayNameWithDialect(String localeID, String displayLocaleID) {
+        return getDisplayNameWithDialectInternal(localeID, getName(displayLocaleID));
+    }
+
+    /**
+     * Returns the locale ID localized for display in the provided locale.
+     * If a dialect name is present in the locale data, then it is returned.
+     * 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.
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static String getDisplayNameWithDialect(String localeID, ULocale displayLocale) {
+        return getDisplayNameWithDialectInternal(localeID, displayLocale.localeID);
+    }
+
+
+    // displayLocaleID is canonical, localeID need not be since parsing will fix this.
+    private static String getDisplayNameWithDialectInternal(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 buf0 = new StringBuffer();
+        StringBuffer buf1 = new StringBuffer();
+
+        IDParser parser = new IDParser(localeID);
+        String[] names = parser.getLanguageScriptCountryVariant();
+
+        DisplayLanguageResult dlr = null;
+        
+        for (int i = 0; i < names.length; ++i) {
+            String name = names[i];
+            if (name.length() > 0) {               
+                if ( i == 0 ) {
+                    dlr = getDisplayLanguageWithDialectInternal(localeID,displayLocaleID);
+                    buf0.append(dlr.value);
+                } else if ( i > 2 || ( i == 1 && !dlr.ateScript) || ( i == 2 && !dlr.ateCountry) ) {
+                    name = getTableString(tableNames[i], null, name, bundle);
+                    if (buf1.length() > 0) {
+                        try {
+                            buf1.append(bundle.get("localeDisplayPattern").getString("separator"));
+                        } catch ( MissingResourceException ex ) {
+                            buf1.append(", ");
+                        }
+                    }
+                    buf1.append(name);
+                }
+            }
+        }
+
+        Map<String, String> m = parser.getKeywordMap();
+        if (!m.isEmpty()) {
+            for (Map.Entry<String, String> e : m.entrySet()) {
+                if (buf1.length() > 0) {
+                    try {
+                        buf1.append(bundle.get("localeDisplayPattern").getString("separator"));
+                    } catch ( MissingResourceException ex ) {
+                        buf1.append(", ");
+                    }
+                }
+                String key = e.getKey();
+                buf1.append(getTableString("Keys", null, key, bundle));
+                buf1.append("=");
+                buf1.append(getTableString("Types", key, e.getValue(), bundle));
+            }
+        }
+
+        String locDispPattern;
+        try {
+           locDispPattern = bundle.get("localeDisplayPattern").getString("pattern");
+        } catch ( MissingResourceException ex ) {
+           locDispPattern = "{0} ({1})";
+        }
+
+        Object[] args = { (Object)buf0.toString() , (Object)buf1.toString() };
+        if ( buf0.length() > 0 && buf1.length() > 0 ) {
+            return MessageFormat.format(locDispPattern,args);
+        } else if ( buf0.length() > 0 ) {
+            return buf0.toString();
+        } else {
+            return buf1.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.
+     * @stable ICU 4.0
+     */
+    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.
+     * @stable ICU 4.0
+     */
+    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<ULocaleAcceptLanguageQ> {
+            private double q;
+            private double serial;
+            public ULocaleAcceptLanguageQ(double theq, int theserial) {
+                q = theq;
+                serial = theserial;
+            }
+            public int compareTo(ULocaleAcceptLanguageQ other) {
+                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<ULocaleAcceptLanguageQ, ULocale> map = new TreeMap<ULocaleAcceptLanguageQ, ULocale>();
+        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[] = 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";
+
+    /**
+     * 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.
+     * @stable ICU 4.0
+     */
+    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(
+                tags[0],
+                tags[1],
+                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.
+     * @stable ICU 4.0
+     */
+    public static ULocale
+    minimizeSubtags(ULocale loc)
+    {
+        String[] tags = new String[3];
+
+        int trailingIndex = parseTagString(
+                loc.localeID,
+                tags);
+
+        String originalLang = tags[0];
+        String originalScript = tags[1];
+        String originalRegion = 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;
+    }
+
+    // --------------------------------
+    //      BCP47/OpenJDK APIs
+    // --------------------------------
+
+    /**
+     * The key for private use locale extension.
+     * @see #getExtension(char)
+     * @see Builder#setExtension(char, String)
+     * 
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final char PRIVATE_USE_EXTENSION = 'x';
+
+    /**
+     * The key for LDML extension.
+     * @see #getExtension(char)
+     * @see Builder#setExtension(char, String)
+     * 
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    static public final char LDML_EXTENSION = 'u';
+
+    /**
+     * Returns the extension associated with the specified extension key, or
+     * null if there is no extension associated with the key.  The key must
+     * be one of <code>[0-9A-Za-z]</code>.
+     * <BR><STRONG>Note:</STRONG>Extension key 'x' and 'X' is reserved for BCP47
+     * private use.  To get the private use value, use <code>PRIVATE_USE_KEY</code>.
+     * <p>
+     * @param key the extension key
+     * @return the extension, or null if this locale 
+     * defines no extension for the specified key.
+     * @throws IllegalArgumentException if the key is not valid.
+     * @see #PRIVATE_USE_EXTENSION
+     * 
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getExtension(char key) {
+        if (!LocaleExtensions.isValidExtensionKey(key)) {
+            throw new IllegalArgumentException("Invalid extension key: " + key);
+        }
+        return extensions().getExtensionValue(key);
+    }
+
+    /**
+     * Returns the set of extension keys associated with this locale, or null
+     * if it has no extensions.  The returned set is immutable.
+     * @return the set of extension keys, or null if this locale has
+     * no extensions.
+     * 
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Set<Character> getExtensionKeys() {
+        return extensions().getExtensionKeys();
+    }
+
+    /**
+     * Returns the LDML keyword value ('type') associated with
+     * the specified LDML key for this locale.  LDML keywords are specified
+     * by the 'u' extension and consist of key/type pairs.  The key must be
+     * two alphanumeric characters in length, or an IllegalArgumentException
+     * is thrown.
+     * @param key the LDML key
+     * @return the value ('type') associated with the key, or null if the 
+     * locale does not define a value for the key.
+     * @throws IllegalArgumentException if the key is not valid.
+     * 
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String getLDMLExtensionValue(String key) {
+        if (!LocaleExtensions.isValidLDMLKey(key)) {
+            throw new IllegalArgumentException("Invalid LDML key: " + key);
+        }
+        return extensions().getLDMLKeywordType(key);
+    }
+
+    /**
+     * Returns the set of keys for LDML keywords defined by this locale, or
+     * null if this locale has no locale extension.  The returned set is
+     * immutable.
+     * @return The set of the LDML keys, or null
+     * 
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public Set<String> getLDMLExtensionKeys() {
+        return extensions().getLDMLKeywordKeys();
+    }
+
+    /**
+     * Returns a well-formed language tag representing this locale.
+     * <p>
+     * <b>Note</b>: If the language, country, or variant fields do
+     * not satisfy BCP47 language tag syntax requirements, they are
+     * omitted from the result.  For example, using the constructor it
+     * is possible to create a Locale instance with digits in the
+     * language field, or only two characters in the variant field.
+     * Since these are not well-formed BCP47 language tag syntax, they
+     * cannot be expressed in BCP47.  Since such 'legacy' locales lose
+     * information when converting to BCP47, it is
+     * recommended that clients switch to conforming locales.
+     * <p>
+     * <b>Note</b>: Underscores in the variant tag are normalized to
+     * hyphen, and all fields, keys, and values are normalized to
+     * lower case.
+     * @return a BCP47 language tag representing the locale.
+     * 
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public String toLanguageTag() {
+        return LanguageTag.toLanguageTag(base(), extensions());
+    }
+
+    /**
+     * Returns a locale for the specified language tag string.  If the
+     * specified language tag contains any ill-formed subtags, the first
+     * such subtag and all following subtags are ignored.
+     * <p>
+     * This implements the 'Language-Tag' production of BCP47, and so supports
+     * grandfathered (regular and irregular) as well as private use language
+     * tags.  Private use tags are represented as 'und-x-whatever', and 
+     * grandfathered tags are converted to their canonical replacements where
+     * they exist.  Note that a few grandfathered tags have no modern replacement,
+     * these will be converted using the fallback described in the first paragraph,
+     * so some information might be lost.
+     * <p>
+     * For a list of grandfathered tags, see 
+     * <a href="http://www.ietf.org/internet-drafts/draft-ietf-ltru-4646bis-21.txt">
+     * RFC4646</a> 
+     * (<span style="background-color: #00ccff; font-weight: bold">Currently Draft, 
+     * remove or reference final version before release.</span>)
+     * @param langtag the language tag
+     * @return the locale that best represents the language tag
+     * 
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static ULocale forLanguageTag(String langtag) {
+//        ULocale locale = ULocale.ROOT;
+        ULocale locale = new ULocale("");
+        LanguageTag tag = null;
+        while (true) {
+            try {
+                tag = LanguageTag.parse(langtag);
+
+                Builder bldr = new Builder();
+
+                String extlang = tag.getExtlang(0);
+                String language = (extlang == null) ? tag.getLanguage() : extlang;
+                // do nothing with language code "und"
+                if (!language.equals("und")) {
+                    bldr.setLanguage(language);
+                }
+
+                bldr.setScript(tag.getScript())
+                    .setRegion(tag.getRegion()).setVariant(tag.getVariant());
+
+                // setExtension may throw an exception if
+                // it contains malformed LDML keys.
+                Set<Extension> exts = tag.getExtensions();
+                if (exts != null) {
+                    for (Extension e : exts) {
+                        bldr.setExtension(e.getSingleton(), e.getValue());
+                    }
+                }
+                bldr.setExtension(PRIVATE_USE_EXTENSION, tag.getPrivateUse());
+                locale = bldr.create();
+                break;
+            } catch (LocaleSyntaxException e) {
+                // this exception was thrown by LanguageTag#parse
+                // - fall through
+            } catch (IllformedLocaleException e) {
+                // this expection was thrown by setExtension with
+                // malformed LDML keys - fall through
+            }
+            // remove the last subtag and try it again
+            int idx = langtag.lastIndexOf('-');
+            if (idx == -1) {
+                // no more subtags
+                break;
+            }
+            langtag = langtag.substring(0, idx);
+        }
+
+        return locale;
+    }
+
+
+    /**
+     * Builder is used to build instances of Locale from values 
+     * configured by the setter.  
+     * <p>
+     * Builder supports the 'langtag' production of RFC 4646.
+     * Language tags consist of the ASCII digits, upper and lower case
+     * letters, and hyphen (which appears only as a field separator).
+     * As a convenience, underscores are accepted and normalized to
+     * hyphen.  Values with any other character are ill-formed.  Since
+     * language tags are case-insensitive, they are normalized
+     * to lower case, case distinctions are <b>not</b>
+     * preserved by the builder.
+     * <p>
+     * Note that since this implements 'langtag' and not 'Language-Tag',
+     * grandfathered language tags are not supported by the builder.
+     * Clients should use {@link #forLanguageTag} instead.
+     * <p> 
+     * Builders can be reused; <code>clear()</code> resets all fields
+     * to their default values.
+     * @see Builder#create
+     * @see Builder#clear
+     * 
+     * @draft ICU 4.2
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final class Builder {
+
+        private InternalLocaleBuilder _locbld = new InternalLocaleBuilder();
+
+        /**
+         * Constructs an empty Builder.
+         * The default values of all fields, extensions, and private
+         * use information are empty, the language is undefined.
+         * 
+         * @draft ICU 4.2
+         * @provisional This API might change or be removed in a future release.
+         */
+        public Builder() {
+        }
+
+        /**
+         * Resets the builder to match the provided locale.  The previous state
+         * of the builder is discarded.  Fields that do not
+         * conform to BCP47 syntax are ill-formed.
+         * @param loc the locale
+         * @return this builder
+         * @throws IllformedLocaleException if <code>loc</code> has any ill-formed
+         * fields.
+         * 
+         * @draft ICU 4.2
+         * @provisional This API might change or be removed in a future release.
+         */
+        public Builder setLocale(ULocale loc) {
+            clear();
+            setLanguage(loc.getLanguage())
+                .setScript(loc.getScript())
+                .setRegion(loc.getCountry())
+                .setVariant(loc.getVariant());
+
+            Set<Character> extKeys = loc.getExtensionKeys();
+            if (extKeys != null) {
+                for (Character k : extKeys) {
+                    char key = k.charValue();
+                    String value = loc.getExtension(key);
+                    if (value != null && value.length() > 0) {
+                        setExtension(key, value);
+                    }
+                }
+            }
+            return this;
+        }
+
+        /**
+         * Resets the builder to match the provided language tag.  The previous state
+         * of the builder is discarded.
+         * @param langtag the language tag
+         * @return this builder
+         * @throws IllformedLocaleException if <code>langtag</code> is ill-formed.
+         * @see #forLanguageTag(String)
+         * 
+         * @draft ICU 4.2
+         * @provisional This API might change or be removed in a future release.
+         */
+        public Builder setLanguageTag(String langtag) {
+            clear();
+            LanguageTag tag = null;
+            try {
+                tag = LanguageTag.parse(langtag);
+            } catch (LocaleSyntaxException e) {
+                throw new IllformedLocaleException(e.getMessage(), e.getErrorIndex());
+            }
+
+            // base locale fields
+            String extlang = tag.getExtlang(0);
+            String language = extlang == null ? tag.getLanguage() : extlang;
+            setLanguage(language.equals("und") ? "": language).setScript(tag.getScript())
+                .setRegion(tag.getRegion()).setVariant(tag.getVariant());
+
+            // extensions
+            Set<Extension> exts = tag.getExtensions();
+            if (exts != null) {
+                for (Extension e : exts) {
+                    setExtension(e.getSingleton(), e.getValue());
+                    //TODO: setExtension may throw an IllformedLocaleException.
+                    //      In this csae, error index must be recalculated.
+                }
+            }
+            // private use
+            setExtension(PRIVATE_USE_EXTENSION, tag.getPrivateUse());
+            return this;
+        }
+
+        /**
+         * Sets the language.  If language is the empty string,
+         * the language is defaulted.  Language should be a two or 
+         * three-letter language code as defined in ISO639.
+         * Well-formed values are any string of two to eight ASCII letters.
+         * @param language the language
+         * @return this builder
+         * @throws IllformedLocaleException if <code>language</code> is ill-formed
+         * 
+         * @draft ICU 4.2
+         * @provisional This API might change or be removed in a future release.
+         */
+        public Builder setLanguage(String language) {
+            try {
+                _locbld.setLanguage(language);
+            } catch (LocaleSyntaxException e) {
+                throw new IllformedLocaleException(e.getMessage(), e.getErrorIndex());
+            }
+            return this;
+        }
+
+        /**
+         * Sets the script.  If script is 
+         * the empty string, the script is defaulted.  Scripts should
+         * be a four-letter script code as defined in ISO 15924.
+         * Well-formed values are any string of four ASCII letters.
+         * @param script the script
+         * @return this builder
+         * @throws IllformedLocaleException if <code>script</code> is ill-formed
+         * 
+         * @draft ICU 4.2
+         * @provisional This API might change or be removed in a future release.
+         */
+        public Builder setScript(String script) {
+            try {
+                _locbld.setScript(script);
+            } catch (LocaleSyntaxException e) {
+                throw new IllformedLocaleException(e.getMessage(), e.getErrorIndex());
+            }
+            return this;
+        }
+
+        /**
+         * Sets the region.  If region is
+         * the empty string, the region is defaulted.  Regions should
+         * be a two-letter ISO 3166 code or a three-digit M. 49 code.
+         * Well-formed values are any two-letter or three-digit
+         * string.
+         * @param region the region
+         * @return this builder
+         * @throws IllformedLocaleException if <code>region</code> is ill-formed
+         * 
+         * @draft ICU 4.2
+         * @provisional This API might change or be removed in a future release.
+         */
+        public Builder setRegion(String region) {
+            try {
+                _locbld.setRegion(region);
+            } catch (LocaleSyntaxException e) {
+                throw new IllformedLocaleException(e.getMessage(), e.getErrorIndex());
+            }
+            return this;
+        }
+
+        /**
+         * Sets the variant.  If variant is
+         * or the empty string, the variant is defaulted.  Variants
+         * should be registered variants (see 
+         * <a href="http://www.iana.org/assignments/language-subtag-registry">
+         * IANA Language Subtag Registry</a>) for the prefix.  Well-formed
+         * variants are any series of fields of either four characters
+         * starting with a digit, or five to eight alphanumeric
+         * characters, separated by hyphen or underscore.
+         * @param variant the variant
+         * @return this builder
+         * @throws IllformedLocaleException if <code>variant</code> is ill-formed
+         * 
+         * @draft ICU 4.2
+         * @provisional This API might change or be removed in a future release.
+         */
+        public Builder setVariant(String variant) {
+            try {
+                _locbld.setVariant(variant);
+            } catch (LocaleSyntaxException e) {
+                throw new IllformedLocaleException(e.getMessage(), e.getErrorIndex());
+            }
+            return this;
+        }
+
+        /**
+         * Sets the extension for the given key.  If the value is
+         * the empty string, the extension is removed.  Legal
+         * keys are the <code>[0-9A-WY-Za-wy-z]</code>.  Well-formed
+         * values are any series of fields of two to eight
+         * alphanumeric characters, separated by hyphen or underscore.
+         * <p>
+         * <b>note</b>:The extension 'u' is used for LDML Keywords.
+         * Setting the 'u' extension replaces any existing LDML
+         * keywords with those defined in the extension.  To be
+         * well-formed, a value for the 'u' extension must meet the
+         * additional constraint that the number of fields be even
+         * (fields represent key value pairs, where the value is
+         * mandatory), and that the keys and values be legal locale
+         * extension keys and values.
+         * @param key the extension key
+         * @param value the extension value
+         * @return this builder
+         * @throws IllformedLocaleException if <code>key</code> is illegal 
+         * or <code>value</code> is ill-formed
+         * @see #setLDMLExtensionValue
+         * 
+         * @draft ICU 4.2
+         * @provisional This API might change or be removed in a future release.
+         */
+        public Builder setExtension(char key, String value) {
+            try {
+                _locbld.setExtension(key, value);
+            } catch (LocaleSyntaxException e) {
+                throw new IllformedLocaleException(e.getMessage(), e.getErrorIndex());
+            }
+            return this;
+        }
+
+        /**
+         * Sets the LDML keyword value ('type') for the given key.  If the
+         * value is the empty string, the LDML keyword is removed.
+         * Well-formed keys are strings of two alphanumeric characters. Well-formed
+         * values are strings of three to eight alphanumeric characters.
+         * <p>
+         * <b>Note</b>:Setting the 'u' extension replaces all LDML
+         * keywords with those defined in the extension.
+         * @param key the LDML extension key
+         * @param value the LDML extension value
+         * @return this builder
+         * @throws IllformedLocaleException if <code>key</code> or <code>value</code>
+         * is ill-formed
+         * @see #setExtension(char, String)
+         * 
+         * @draft ICU 4.2
+         * @provisional This API might change or be removed in a future release.
+         */
+        public Builder setLDMLExtensionValue(String key, String value) {
+            try {
+                _locbld.setLDMLExtensionValue(key, value);
+            } catch (LocaleSyntaxException e) {
+                throw new IllformedLocaleException(e.getMessage(), e.getErrorIndex());
+            }
+            return this;
+        }
+
+        /**
+         * Resets the builder to its initial, default state.
+         * @return this builder
+         * 
+         * @draft ICU 4.2
+         * @provisional This API might change or be removed in a future release.
+         */
+        public Builder clear() {
+            _locbld.clear();
+            return this;
+        }
+
+        /**
+         * Resets the extensions to their initial, default state.
+         * Language, script, region and variant are unchanged.
+         * @return this builder
+         * @see #setExtension(char, String)
+         * 
+         * @draft ICU 4.2
+         * @provisional This API might change or be removed in a future release.
+         */
+        public Builder clearExtensions() {
+            _locbld.removeLocaleExtensions();
+            return this;
+        }
+
+        /**
+         * Returns an instance of locale created from the fields set
+         * on this builder.
+         * @return a new locale
+         * 
+         * @draft ICU 4.2
+         * @provisional This API might change or be removed in a future release.
+         */
+        public ULocale create() {
+            return getInstance(_locbld.getBaseLocale(), _locbld.getLocaleExtensions());
+        }
+    }
+
+    private static ULocale getInstance(BaseLocale base, LocaleExtensions ext) {
+        StringBuffer id = new StringBuffer(base.getID());
+
+        TreeMap<String, String> kwds = null;
+        Set<Character> extKeys = ext.getExtensionKeys();
+        if (extKeys != null) {
+            // legacy locale ID assume LDML keywords and
+            // other extensions are at the same level.
+            // e.g. @a=ext-for-aa;calendar=japanese;m=ext-for-mm;x=priv-use
+            kwds = new TreeMap<String, String>();
+            boolean hasLDMLKeywords = false;
+            for (Character key : extKeys) {
+                if (key.charValue() == 'u') {
+                    // LDML keywords
+                    hasLDMLKeywords = true;
+                    continue;
+                }
+                String value = ext.getExtensionValue(key.charValue());
+                kwds.put(String.valueOf(key), value);
+            }
+
+            if (hasLDMLKeywords) {
+                Set<String> ldmlKeys = ext.getLDMLKeywordKeys();
+                if (ldmlKeys != null) {
+                    for (String bcpKey : ldmlKeys) {
+                        String bcpValue = ext.getLDMLKeywordType(bcpKey);
+                        // transform to legacy key/type
+                        String lkey = bcp47ToLDMLKey(bcpKey);
+                        String ltype = bcp47ToLDMLType(lkey, bcpValue);
+                        kwds.put(lkey, ltype);
+                    }
+                }
+            }
+
+            if (kwds.size() > 0) {
+                id.append("@");
+                Set<Map.Entry<String, String>> kset = kwds.entrySet();
+                boolean insertSep = false;
+                for (Map.Entry<String, String> kwd : kset) {
+                    if (insertSep) {
+                        id.append(";");
+                    } else {
+                        insertSep = true;
+                    }
+                    id.append(kwd.getKey());
+                    id.append("=");
+                    id.append(kwd.getValue());
+                }
+            }
+        }
+
+        return new ULocale(id.toString());
+    }
+
+    private BaseLocale base() {
+        String language = getLanguage();
+        if (equals(ULocale.ROOT)) {
+            language = "";
+        }
+        return BaseLocale.getInstance(language, getScript(), getCountry(), getVariant());
+    }
+
+    private LocaleExtensions extensions() {
+        Iterator<String> kwitr = getKeywords();
+        if (kwitr == null) {
+            return LocaleExtensions.EMPTY_EXTENSIONS;
+        }
+
+        TreeMap<Character, String> extMap = null;
+        TreeMap<String, String> ldmlKwMap = null;
+
+        while (kwitr.hasNext()) {
+            String key = kwitr.next();
+            String value = getKeywordValue(key);
+            if (key.length() == 1) {
+                // non LDML extension or private use
+                // We want to keep only valid subtags
+                boolean isPrivUse = (key.charAt(0) == PRIVATE_USE_EXTENSION);
+                if (isPrivUse || LanguageTag.isExtensionSingleton(key)) {
+                    boolean isValid = true;
+                    String[] subtags = Utility.split(value, '-');
+                    for (int i = 0; i < subtags.length; i++) {
+                        if (isPrivUse) {
+                            if (!LanguageTag.isPrivateuseValueSubtag(subtags[i])) {
+                                isValid = false;
+                                break;
+                            }
+                        } else {
+                            if (!LanguageTag.isExtensionSubtag(subtags[i])) {
+                                isValid = false;
+                                break;
+                            }
+                        }
+                    }
+                    if (isValid) {
+                        if (extMap == null) {
+                            extMap = new TreeMap<Character, String>();
+                        }
+                        extMap.put(new Character(key.charAt(0)), value.intern());
+                    }
+                }
+            } else {
+                // LDML keyword
+                String bcpKey = ldmlKeyToBCP47(key);
+                String bcpVal = ldmlTypeToBCP47(key, value);
+                if (bcpKey != null && bcpVal != null) {
+                    if (ldmlKwMap == null) {
+                        ldmlKwMap = new TreeMap<String, String>();
+                    }
+                    ldmlKwMap.put(bcpKey.intern(), bcpVal.intern());
+                }
+            }
+        }
+
+        if (ldmlKwMap != null) {
+            // create LDML extension string
+            StringBuilder buf = new StringBuilder();
+            LocaleExtensions.keywordsToString(ldmlKwMap, buf);
+            if (extMap == null) {
+                extMap = new TreeMap<Character, String>();
+            }
+            extMap.put(new Character('u'), buf.toString().intern());
+        }
+
+        return LocaleExtensions.getInstance(extMap, ldmlKwMap);
+    }
+
+    //
+    // LDML legacy/BCP47 key and type mapping functions
+    //
+    private static String ldmlKeyToBCP47(String key) {
+        UResourceBundle supplemental = UResourceBundle.getBundleInstance(
+                                            ICUResourceBundle.ICU_BASE_NAME,
+                                            "supplementalData",
+                                            ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+        UResourceBundle bcp47Mappings = supplemental.get("bcp47KeywordMappings");
+        UResourceBundle keyMaps = bcp47Mappings.get("key");
+
+        // normalize key to lowercase
+        key = AsciiUtil.toLowerString(key);
+        String bcpKey = null;
+        try {
+            bcpKey = keyMaps.getString(key);
+        } catch (MissingResourceException mre) {
+            // fall through
+        }
+
+        if (bcpKey == null) {
+            if (key.length() == 2 && LanguageTag.isExtensionSubtag(key)) {
+                return key;
+            }
+            return null;
+        }
+        return bcpKey;
+    }
+
+    private static String bcp47ToLDMLKey(String bcpKey) {
+        UResourceBundle supplemental = UResourceBundle.getBundleInstance(
+                                            ICUResourceBundle.ICU_BASE_NAME,
+                                            "supplementalData",
+                                            ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+        UResourceBundle bcp47Mappings = supplemental.get("bcp47KeywordMappings");
+        UResourceBundle keyMaps = bcp47Mappings.get("key");
+
+        // normalize bcp key to lowercase
+        bcpKey = AsciiUtil.toLowerString(bcpKey);
+        String key = null;
+        for (int i = 0; i < keyMaps.getSize(); i++) {
+            UResourceBundle keyMap = keyMaps.get(i);
+            if (bcpKey.equals(keyMap.getString())) {
+                key = keyMap.getKey();
+                break;
+            }
+        }
+        if (key == null) {
+            return bcpKey;
+        }
+        return key;
+    }
+
+    private static String ldmlTypeToBCP47(String key, String type) {
+        UResourceBundle supplemental = UResourceBundle.getBundleInstance(
+                                            ICUResourceBundle.ICU_BASE_NAME,
+                                            "supplementalData",
+                                            ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+        UResourceBundle bcp47Mappings = supplemental.get("bcp47KeywordMappings");
+
+        // normalize key/type to lowercase
+        key = AsciiUtil.toLowerString(key);
+        type = AsciiUtil.toLowerString(type);
+        String bcpType = null;
+        try {
+            UResourceBundle typeMaps = bcp47Mappings.get(key);
+            String tmp = key.equals("timezone") ? type.replaceAll("/", ":") : type;
+            bcpType = typeMaps.getString(tmp);
+        } catch (MissingResourceException mre) {
+            // fall through
+        }
+        
+        if (bcpType == null) {
+            int typeLen = type.length();
+            if (typeLen >= 3 && typeLen <= 8 && LanguageTag.isExtensionSubtag(type)) {
+                return type;
+            }
+            return null;
+        }
+        return bcpType;
+    }
+
+    private static String bcp47ToLDMLType(String key, String bcpType) {
+        UResourceBundle supplemental = UResourceBundle.getBundleInstance(
+                ICUResourceBundle.ICU_BASE_NAME,
+                "supplementalData",
+                ICUResourceBundle.ICU_DATA_CLASS_LOADER);
+        UResourceBundle bcp47Mappings = supplemental.get("bcp47KeywordMappings");
+
+        // normalize key/bcpType to lowercase
+        key = AsciiUtil.toLowerString(key);
+        bcpType = AsciiUtil.toLowerString(bcpType);
+
+        String type = null;
+        try {
+            UResourceBundle typeMaps = bcp47Mappings.get(key);
+
+            // Note:    Linear search for time zone ID might be too slow.
+            //          ICU services do not use timezone keywords for now.
+            //          In future, we may need to build the optimized inverse
+            //          lookup table.
+
+            for (int i = 0; i < typeMaps.getSize(); i++) {
+                UResourceBundle typeMap = typeMaps.get(i);
+                if (bcpType.equals(typeMap.getString())) {
+                    type = typeMap.getKey();
+                    if (key.equals("timezone")) {
+                        type = type.replaceAll(":", "/");
+                    }
+                    break;
+                }
+            }
+        } catch (MissingResourceException mre) {
+            // fall through
+        }
+
+        if (type == null) {
+            return bcpType;
+        }
+        return type;
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/util/UResourceBundle.java b/main/classes/core/src/com/ibm/icu/util/UResourceBundle.java
new file mode 100644
index 0000000..49cc2be
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/UResourceBundle.java
@@ -0,0 +1,997 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.util;
+
+import java.lang.ref.SoftReference;
+import java.nio.ByteBuffer;
+import java.util.Collections;
+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.Set;
+import java.util.TreeSet;
+
+import com.ibm.icu.impl.ICUCache;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.ResourceBundleWrapper;
+import com.ibm.icu.impl.SimpleCache;
+
+/**
+ * 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<ResourceCacheKey, UResourceBundle> BUNDLE_CACHE =
+        new SimpleCache<ResourceCacheKey, UResourceBundle>();
+
+    /**
+     * @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<ResourceCacheKey, UResourceBundle>();
+    }
+
+    /**
+     * Method used by subclasses to add a resource bundle object to the managed cache.
+     * Works like a putIfAbsent(): If the cache already contains a matching bundle,
+     * that one will be retained and returned.
+     * @internal revisit for ICU 3.6
+     * @deprecated This API is ICU internal only.
+     */
+    protected static UResourceBundle addToCache(ClassLoader cl, String fullName,
+                                                ULocale defaultLocale, UResourceBundle b) {
+        synchronized(cacheKey){
+            cacheKey.setKeyValues(cl, fullName, defaultLocale);
+            UResourceBundle cachedBundle = BUNDLE_CACHE.get(cacheKey);
+            if (cachedBundle != null) {
+                return cachedBundle;
+            }
+            BUNDLE_CACHE.put((ResourceCacheKey)cacheKey.clone(), b);
+            return 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 BUNDLE_CACHE.get(cacheKey);
+        }
+    }
+
+    /**
+     * 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<ClassLoader> 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<ClassLoader>(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<Map<String, Integer>> ROOT_CACHE;
+
+    private static int getRootType(String baseName, ClassLoader root)
+    {
+        Map<String, Integer> m = null;
+        Integer rootType;
+
+        if (ROOT_CACHE != null) {
+            m = ROOT_CACHE.get();
+        }
+
+        if (m == null) {
+            m = new HashMap<String, Integer>();
+            ROOT_CACHE = new SoftReference<Map<String, Integer>>(m);
+        }
+
+        rootType = 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 = Integer.valueOf(rt);
+            m.put(baseName, rootType);
+        }
+
+        return rootType.intValue();
+    }
+
+    private static void setRootType(String baseName, int rootType)
+    {
+        Integer rt = Integer.valueOf(rootType);
+        Map<String, Integer> m = null;
+
+        if (ROOT_CACHE != null) {
+            m = ROOT_CACHE.get();
+        } else {
+            m = new HashMap<String, Integer>();
+            ROOT_CACHE = new SoftReference<Map<String, Integer>>(m);
+        }
+
+        m.put(baseName, rt);
+    }
+
+    /**
+     * Loads a new resource bundle for the given 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 = ICUResourceBundle.getFullName(baseName, localeName);
+                b = loadFromCache(root, fullName, defaultLocale);
+                if (b == null) {
+                    b = ICUResourceBundle.getBundleInstance(baseName, localeName, root, disableFallback);
+                }
+            } 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 item from a binary resource, as a read-only ByteBuffer.
+     *
+     * @return a pointer to a chunk of unsigned bytes which live in a memory mapped/DLL file.
+     * @see #getIntVector
+     * @see #getInt
+     * @throws MissingResourceException If no resource bundle can be found.
+     * @throws UResourceTypeMismatchException If the resource has a type mismatch.
+     * @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 If resource bundle is missing.
+     * @throws UResourceTypeMismatchException If resource bundle has a type mismatch.
+     * @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 If resource bundle is missing.
+     * @throws UResourceTypeMismatchException If resource bundle has a type mismatch.
+     * @stable ICU 3.8
+     */
+    public String[] getStringArray() {
+        throw new UResourceTypeMismatchException("");
+    }
+
+    /**
+     * Returns a binary data from a binary resource, as a byte array with a copy
+     * of the bytes from the resource bundle.
+     *
+     * @param ba  The byte array to write the bytes to. A null variable is OK.
+     * @return an array of bytes containing the binary data from the resource.
+     * @see #getIntVector
+     * @see #getInt
+     * @throws MissingResourceException If resource bundle is missing.
+     * @throws UResourceTypeMismatchException If resource bundle has a type mismatch.
+     * @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 If resource bundle is missing.
+     * @throws UResourceTypeMismatchException If resource bundle has a type mismatch.
+     * @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 If resource bundle is missing.
+     * @throws UResourceTypeMismatchException If resource bundle type mismatch.
+     * @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 If resource bundle is missing.
+     * @throws UResourceTypeMismatchException If resource bundle type mismatch.
+     * @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 If resource bundle is missing.
+     * @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 = ICUResourceBundle.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 If the index value is out of bounds of accepted values.
+     * @throws UResourceTypeMismatchException If resource bundle type mismatch.
+     * @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 If the index value is out of bounds of accepted values.
+     * @throws MissingResourceException If the resource bundle is missing.
+     * @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,
+     *         which is empty if this is not a bundle or a table resource
+     * @stable ICU 3.8
+     */
+    public Enumeration<String> getKeys() {
+        return Collections.enumeration(keySet());
+    }
+    /**
+     * Returns a Set of all keys contained in this ResourceBundle and its parent bundles.
+     * @return a Set of all keys contained in this ResourceBundle and its parent bundles,
+     *         which is empty if this is not a bundle or a table resource
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public Set<String> keySet() {
+        if(keys == null) {
+            if(isTopLevelResource()) {
+                TreeSet<String> newKeySet;
+                if(parent == null) {
+                    newKeySet = new TreeSet<String>();
+                } else if(parent instanceof UResourceBundle) {
+                    newKeySet = new TreeSet<String>(((UResourceBundle)parent).keySet());
+                } else {
+                    // TODO: Java 6 ResourceBundle has keySet(); use it when we upgrade to Java 6
+                    // and remove this else branch.
+                    newKeySet = new TreeSet<String>();
+                    Enumeration<String> parentKeys = parent.getKeys();
+                    while(parentKeys.hasMoreElements()) {
+                        newKeySet.add(parentKeys.nextElement());
+                    }
+                }
+                newKeySet.addAll(handleKeySet());
+                keys = Collections.unmodifiableSet(newKeySet);
+            } else {
+                return handleKeySet();
+            }
+        }
+        return keys;
+    }
+    private Set<String> keys = null;
+    /**
+     * Returns a Set of the keys contained <i>only</i> in this ResourceBundle.
+     * This does not include further keys from parent bundles.
+     * @return a Set of the keys contained only in this ResourceBundle,
+     *         which is empty if this is not a bundle or a table resource
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected Set<String> handleKeySet() {
+        return Collections.emptySet();
+    }
+
+    /**
+     * 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 1;
+    }
+
+    /**
+     * 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() {
+        return NONE;
+    }
+
+    /**
+     * 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 null;
+    }
+    /**
+     * 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 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 ==============
+
+    /**
+     * 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<String, String> 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<String, String> 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<String> handleGetKeys(){
+        return null;
+    }
+
+    /**
+     * {@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);
+
+    /**
+     * Is this a top-level resource, that is, a whole bundle?
+     * @return true if this is a top-level resource
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    protected boolean isTopLevelResource() {
+        return true;
+    }
+}
diff --git a/main/classes/core/src/com/ibm/icu/util/UResourceBundleIterator.java b/main/classes/core/src/com/ibm/icu/util/UResourceBundleIterator.java
new file mode 100644
index 0000000..5193558
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/UResourceBundleIterator.java
@@ -0,0 +1,95 @@
+/*
+******************************************************************************
+* Copyright (C) 2004-2009, 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 If there does not exist such an element.
+     * @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 If there does not exist such an element.
+     * @throws UResourceTypeMismatchException If resource has a type mismatch.
+     * @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/main/classes/core/src/com/ibm/icu/util/UResourceTypeMismatchException.java b/main/classes/core/src/com/ibm/icu/util/UResourceTypeMismatchException.java
new file mode 100644
index 0000000..8f2810b
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/UniversalTimeScale.java b/main/classes/core/src/com/ibm/icu/util/UniversalTimeScale.java
new file mode 100644
index 0000000..f297e21
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/VTimeZone.java b/main/classes/core/src/com/ibm/icu/util/VTimeZone.java
new file mode 100644
index 0000000..58c26dd
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/VTimeZone.java
@@ -0,0 +1,2022 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2009, 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.ArrayList;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.impl.Grego;
+
+/**
+ * <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 If there were problems creating a buffered writer or writing to it.
+     * 
+     * @stable ICU 3.8
+     */
+    public void write(Writer writer) throws IOException {
+        BufferedWriter bw = new BufferedWriter(writer);
+        if (vtzlines != null) {
+            for (String line : vtzlines) {
+                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 If there were problems reading and writing to the writer.
+     * 
+     * @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 If there were problems reading or writing to the writer.
+     * 
+     * @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<String> 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 {
+            ICU_TZVERSION = TimeZone.getTZDataVersion();
+        } 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<String>();
+            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<String> dates = null;  // list of RDATE or RRULE strings
+        List<TimeZoneRule> rules = new ArrayList<TimeZoneRule>();   // rule list
+        int initialRawOffset = 0;  // initial offset
+        int initialDSTSavings = 0;  // initial offset
+        long firstStart = MAX_TIME; // the earliest rule start time
+
+        for (String line : vtzlines) {
+            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<String>();
+                    }
+                    // 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<String>();
+                    }
+                    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 = 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 = 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);
+            }
+        }
+
+        for (TimeZoneRule r : rules) {
+            rbtz.addTransitionRule(r);
+        }
+
+        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<String> dates, int fromOffset) {
+        if (dates == null || dates.size() == 0) {
+            return null;
+        }
+        // Parse the first rule
+        String rrule = 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 = 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<String> 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()];
+            int idx = 0;
+            try {
+                for (String date : dates) {
+                    times[idx++] = parseDateTimeString(date, 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/main/classes/core/src/com/ibm/icu/util/ValueIterator.java b/main/classes/core/src/com/ibm/icu/util/ValueIterator.java
new file mode 100644
index 0000000..fa3c719
--- /dev/null
+++ b/main/classes/core/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/main/classes/core/src/com/ibm/icu/util/VersionInfo.java b/main/classes/core/src/com/ibm/icu/util/VersionInfo.java
new file mode 100644
index 0000000..ba83795
--- /dev/null
+++ b/main/classes/core/src/com/ibm/icu/util/VersionInfo.java
@@ -0,0 +1,492 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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<VersionInfo>
+{
+    // 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;
+
+    /**
+     * Unicode 5.1 version
+     * @stable ICU 4.2
+     */
+    public static final VersionInfo UNICODE_5_1;
+
+    /**
+     * ICU4J current release version
+     * @stable ICU 2.8
+     */
+    public static final VersionInfo ICU_VERSION;
+
+    /**
+     * Data version string for ICU's internal data.
+     * Used for appending to data path (e.g. icudt43b)
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static final String ICU_DATA_VERSION_PATH = "43b";
+    
+    /**
+     * Data version in ICU4J.
+     * @draft ICU 4.4
+     * @provisional This API might change or be removed in a future release.
+     */
+    public static final VersionInfo ICU_DATA_VERSION;
+
+    /**
+     * 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 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 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);
+        VersionInfo  result  = MAP_.get(key);
+        if (result == null) {
+            result = new VersionInfo(version);
+            MAP_.put(key, result);
+        }
+        return 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 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 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 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_;
+    }
+
+    // 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<Integer, VersionInfo> MAP_ = new HashMap<Integer, VersionInfo>();
+    /**
+     * 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(5, 0, 0, 0);
+        UNICODE_5_1   = getInstance(5, 1, 0, 0);
+        ICU_VERSION   = getInstance(4, 3, 2, 0);
+        ICU_DATA_VERSION = getInstance(4, 3, 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/main/classes/core/src/com/ibm/icu/util/package.html b/main/classes/core/src/com/ibm/icu/util/package.html
new file mode 100644
index 0000000..2dc06c7
--- /dev/null
+++ b/main/classes/core/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/main/classes/localespi/.classpath b/main/classes/localespi/.classpath
new file mode 100644
index 0000000..a8fff67
--- /dev/null
+++ b/main/classes/localespi/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry excluding="**/.svn/" kind="src" path="src"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-core"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-collate"/>
+	<classpathentry kind="output" path="out/bin"/>
+</classpath>
diff --git a/main/classes/localespi/.project b/main/classes/localespi/.project
new file mode 100644
index 0000000..63d39ce
--- /dev/null
+++ b/main/classes/localespi/.project
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>icu4j-localespi</name>
+	<comment></comment>
+	<projects>
+		<project>icu4j-collate</project>
+		<project>icu4j-core</project>
+		<project>icu4j-shared</project>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/main/classes/localespi/.settings/org.eclipse.jdt.core.prefs b/main/classes/localespi/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..db2bb1d
--- /dev/null
+++ b/main/classes/localespi/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,330 @@
+#Thu Aug 27 17:47:29 EDT 2009
+eclipse.preferences.version=1
+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.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+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=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+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=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+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=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=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=warning
+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.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+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.unusedParameterIncludeDocCommentReference=enabled
+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.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+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=120
+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_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not 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=120
+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/main/classes/localespi/.settings/org.eclipse.jdt.ui.prefs b/main/classes/localespi/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..c7bca97
--- /dev/null
+++ b/main/classes/localespi/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,10 @@
+#Wed Jun 17 11:10:20 EDT 2009
+eclipse.preferences.version=1
+formatter_profile=_ICU4J Standard
+formatter_settings_version=11
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+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/main/classes/localespi/build.properties b/main/classes/localespi/build.properties
new file mode 100644
index 0000000..af2ba01
--- /dev/null
+++ b/main/classes/localespi/build.properties
@@ -0,0 +1,9 @@
+#*******************************************************************************
+#* Copyright (C) 2009, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+shared.dir = ../../shared
+
+javac.source = 1.6
+javac.target = 1.6
+javac.compilerarg = -Xlint:all,-deprecation,-dep-ann
diff --git a/main/classes/localespi/build.xml b/main/classes/localespi/build.xml
new file mode 100644
index 0000000..ca3a156
--- /dev/null
+++ b/main/classes/localespi/build.xml
@@ -0,0 +1,29 @@
+<!--
+*******************************************************************************
+* Copyright (C) 2009, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+-->
+<project name="localespi" default="build" basedir=".">
+    <property file="build-local.properties"/>
+    <property file="build.properties"/>
+    <import file="${shared.dir}/build/common-targets.xml"/>
+
+    <path id="javac.classpathref">
+        <path refid="javac.classpathref.${ant.project.name}"/>
+    </path>
+    <property name="jar.file" value="${icu4j.localespi.jar}"/>
+
+    <target name="build" depends="compile, copy, jar" description="Build the project"/>
+
+    <target name="build-all" depends="@build-all" description="Build the project including all dependencies"/>
+
+    <target name="clean" depends="@clean" description="Clean up the build outputs"/>
+
+    <target name="compile" depends="@compile" description="Compile java source files"/>
+
+    <target name="copy" depends="@copy" description="Copy non-java runtime files to the project's binary directory"/>
+
+    <target name="jar" depends="compile, copy, @jar" description="Create the project's jar file"/>
+
+</project>
\ No newline at end of file
diff --git a/main/classes/localespi/localespi-build.launch b/main/classes/localespi/localespi-build.launch
new file mode 100644
index 0000000..153e55c
--- /dev/null
+++ b/main/classes/localespi/localespi-build.launch
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<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>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j-localespi"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.running" value="true"/>
+<mapEntry key="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-localespi/build.xml}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/main/classes/localespi/manifest.stub b/main/classes/localespi/manifest.stub
new file mode 100644
index 0000000..e3bb541
--- /dev/null
+++ b/main/classes/localespi/manifest.stub
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+
+Name: com/ibm/icu/impl
+Specification-Title: ICU for Java Locale Service Provider
+Specification-Version: @SPECVERSION@
+Specification-Vendor: ICU
+Implementation-Title: ICU for Java Locale Service Provider
+Implementation-Version: @IMPLVERSION@
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: @COPYRIGHT@
diff --git a/main/classes/localespi/readme.html b/main/classes/localespi/readme.html
new file mode 100644
index 0000000..809bbdb
--- /dev/null
+++ b/main/classes/localespi/readme.html
@@ -0,0 +1,280 @@
+<!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-2009, 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).
+<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>
+<p><I><font size="-1">Copyright &copy; 2008-2009 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>
\ No newline at end of file
diff --git a/main/classes/localespi/src/META-INF/services/java.text.spi.BreakIteratorProvider b/main/classes/localespi/src/META-INF/services/java.text.spi.BreakIteratorProvider
new file mode 100644
index 0000000..1c84a78
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/META-INF/services/java.text.spi.CollatorProvider b/main/classes/localespi/src/META-INF/services/java.text.spi.CollatorProvider
new file mode 100644
index 0000000..df5c518
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/META-INF/services/java.text.spi.DateFormatProvider b/main/classes/localespi/src/META-INF/services/java.text.spi.DateFormatProvider
new file mode 100644
index 0000000..410eda0
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/META-INF/services/java.text.spi.DateFormatSymbolsProvider b/main/classes/localespi/src/META-INF/services/java.text.spi.DateFormatSymbolsProvider
new file mode 100644
index 0000000..91f0279
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/META-INF/services/java.text.spi.DecimalFormatSymbolsProvider b/main/classes/localespi/src/META-INF/services/java.text.spi.DecimalFormatSymbolsProvider
new file mode 100644
index 0000000..7b060b3
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/META-INF/services/java.text.spi.NumberFormatProvider b/main/classes/localespi/src/META-INF/services/java.text.spi.NumberFormatProvider
new file mode 100644
index 0000000..1287b13
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/META-INF/services/java.util.spi.CurrencyNameProvider b/main/classes/localespi/src/META-INF/services/java.util.spi.CurrencyNameProvider
new file mode 100644
index 0000000..5b61edb
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/META-INF/services/java.util.spi.LocaleNameProvider b/main/classes/localespi/src/META-INF/services/java.util.spi.LocaleNameProvider
new file mode 100644
index 0000000..31cbcc7
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/META-INF/services/java.util.spi.TimeZoneNameProvider b/main/classes/localespi/src/META-INF/services/java.util.spi.TimeZoneNameProvider
new file mode 100644
index 0000000..57ce8f6
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/icuadapter/NumberFormatJDK.java b/main/classes/localespi/src/com/ibm/icu/impl/icuadapter/NumberFormatJDK.java
new file mode 100644
index 0000000..8332e24
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/icuadapter/TimeZoneJDK.java b/main/classes/localespi/src/com/ibm/icu/impl/icuadapter/TimeZoneJDK.java
new file mode 100644
index 0000000..24025a0
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProvider.java b/main/classes/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProvider.java
new file mode 100644
index 0000000..8b06446
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties b/main/classes/localespi/src/com/ibm/icu/impl/javaspi/ICULocaleServiceProviderConfig.properties
new file mode 100644
index 0000000..5103af2
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/BreakIteratorProviderICU.java b/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/BreakIteratorProviderICU.java
new file mode 100644
index 0000000..15b8709
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/CollatorProviderICU.java b/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/CollatorProviderICU.java
new file mode 100644
index 0000000..0f5195a
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatProviderICU.java b/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatProviderICU.java
new file mode 100644
index 0000000..8971c57
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatSymbolsProviderICU.java b/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/DateFormatSymbolsProviderICU.java
new file mode 100644
index 0000000..c1e1b79
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/DecimalFormatSymbolsProviderICU.java b/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/DecimalFormatSymbolsProviderICU.java
new file mode 100644
index 0000000..96c483d
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/NumberFormatProviderICU.java b/main/classes/localespi/src/com/ibm/icu/impl/javaspi/text/NumberFormatProviderICU.java
new file mode 100644
index 0000000..a786d72
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/javaspi/util/CurrencyNameProviderICU.java b/main/classes/localespi/src/com/ibm/icu/impl/javaspi/util/CurrencyNameProviderICU.java
new file mode 100644
index 0000000..423f3b8
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/javaspi/util/LocaleNameProviderICU.java b/main/classes/localespi/src/com/ibm/icu/impl/javaspi/util/LocaleNameProviderICU.java
new file mode 100644
index 0000000..8ab8b58
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/javaspi/util/TimeZoneNameProviderICU.java b/main/classes/localespi/src/com/ibm/icu/impl/javaspi/util/TimeZoneNameProviderICU.java
new file mode 100644
index 0000000..cfbd2db
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/BreakIteratorICU.java b/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/BreakIteratorICU.java
new file mode 100644
index 0000000..6f9a479
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/CalendarICU.java b/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/CalendarICU.java
new file mode 100644
index 0000000..f111b4b
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/CollationKeyICU.java b/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/CollationKeyICU.java
new file mode 100644
index 0000000..546992b
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/CollatorICU.java b/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/CollatorICU.java
new file mode 100644
index 0000000..a89c0a6
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/DateFormatSymbolsICU.java b/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/DateFormatSymbolsICU.java
new file mode 100644
index 0000000..e4d36bc
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatICU.java b/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatICU.java
new file mode 100644
index 0000000..e5bda5c
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatSymbolsICU.java b/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/DecimalFormatSymbolsICU.java
new file mode 100644
index 0000000..a7d0a2e
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/NumberFormatICU.java b/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/NumberFormatICU.java
new file mode 100644
index 0000000..32b408f
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/SimpleDateFormatICU.java b/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/SimpleDateFormatICU.java
new file mode 100644
index 0000000..3a5ca02
--- /dev/null
+++ b/main/classes/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/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/TimeZoneICU.java b/main/classes/localespi/src/com/ibm/icu/impl/jdkadapter/TimeZoneICU.java
new file mode 100644
index 0000000..014c959
--- /dev/null
+++ b/main/classes/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/main/classes/translit/.classpath b/main/classes/translit/.classpath
new file mode 100644
index 0000000..e3b5e98
--- /dev/null
+++ b/main/classes/translit/.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-core"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="output" path="out/bin"/>
+</classpath>
diff --git a/main/classes/translit/.externalToolBuilders/copy-data-translit.launch b/main/classes/translit/.externalToolBuilders/copy-data-translit.launch
new file mode 100644
index 0000000..886dce8
--- /dev/null
+++ b/main/classes/translit/.externalToolBuilders/copy-data-translit.launch
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_AFTER_CLEAN_TARGETS" value="copy-data,"/>
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_MANUAL_TARGETS" value="copy-data,"/>
+<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-translit/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-translit"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.running" value="true"/>
+<mapEntry key="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-translit/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"/>
+</launchConfiguration>
diff --git a/main/classes/translit/.project b/main/classes/translit/.project
new file mode 100644
index 0000000..29a64c8
--- /dev/null
+++ b/main/classes/translit/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>icu4j-translit</name>
+	<comment></comment>
+	<projects>
+		<project>icu4j-core</project>
+		<project>icu4j-shared</project>
+	</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/copy-data-translit.launch</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/main/classes/translit/.settings/org.eclipse.jdt.core.prefs b/main/classes/translit/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0b9f771
--- /dev/null
+++ b/main/classes/translit/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,345 @@
+#Thu Aug 27 17:47:44 EDT 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+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.doc.comment.support=enabled
+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.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+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=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+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.invalidJavadoc=warning
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+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=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=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=warning
+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.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+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.unusedParameterIncludeDocCommentReference=enabled
+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.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
+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=120
+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_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not 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.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+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=120
+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/main/classes/translit/.settings/org.eclipse.jdt.ui.prefs b/main/classes/translit/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..977a256
--- /dev/null
+++ b/main/classes/translit/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,10 @@
+#Wed Jul 08 12:14:39 EDT 2009
+eclipse.preferences.version=1
+formatter_profile=_ICU4J Standard
+formatter_settings_version=11
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+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/main/classes/translit/build.properties b/main/classes/translit/build.properties
new file mode 100644
index 0000000..a21fb19
--- /dev/null
+++ b/main/classes/translit/build.properties
@@ -0,0 +1,6 @@
+#*******************************************************************************
+#* Copyright (C) 2009, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+shared.dir = ../../shared
+javac.compilerarg = -Xlint:all,-deprecation,-dep-ann
diff --git a/main/classes/translit/build.xml b/main/classes/translit/build.xml
new file mode 100644
index 0000000..f5ac7af
--- /dev/null
+++ b/main/classes/translit/build.xml
@@ -0,0 +1,35 @@
+<!--
+*******************************************************************************
+* Copyright (C) 2009, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+-->
+<project name="translit" default="build" basedir=".">
+    <property file="build-local.properties"/>
+    <property file="build.properties"/>
+    <import file="${shared.dir}/build/common-targets.xml"/>
+
+    <path id="javac.classpathref">
+        <path refid="javac.classpathref.${ant.project.name}"/>
+    </path>
+    <property name="jar.file" value="${icu4j.translit.jar}"/>
+
+    <target name="build" depends="compile, copy, jar" description="Build the project"/>
+
+    <target name="build-all" depends="@build-all" description="Build the project including all dependencies"/>
+
+    <target name="clean" depends="@clean" description="Clean up the build outputs"/>
+
+    <target name="compile" depends="@compile" description="Compile java source files"/>
+
+    <target name="copy" depends="@copy, copy-data" description="Copy non-java runtime files to the project's binary directory"/>
+
+    <target name="jar" depends="compile, copy, @jar" description="Create the project's jar file"/>
+
+    <target name="copy-data" description="Extract pre-built ICU transliteration data files and copy them to the project's binary directory">
+        <unjar src="${icu4j.data.jar}" dest="${bin.dir}">
+            <patternset includes="**/translit/*"/>
+        </unjar>
+    </target>
+
+</project>
diff --git a/main/classes/translit/manifest.stub b/main/classes/translit/manifest.stub
new file mode 100644
index 0000000..d2149b5
--- /dev/null
+++ b/main/classes/translit/manifest.stub
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+
+Name: com/ibm/icu/text
+Specification-Title: ICU for Java Transliteration
+Specification-Version: @SPECVERSION@
+Specification-Vendor: ICU
+Implementation-Title: ICU for Java Transliteration
+Implementation-Version: @IMPLVERSION@
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: @COPYRIGHT@
\ No newline at end of file
diff --git a/main/classes/translit/src/com/ibm/icu/impl/UtilityExtensions.java b/main/classes/translit/src/com/ibm/icu/impl/UtilityExtensions.java
new file mode 100644
index 0000000..40080d7
--- /dev/null
+++ b/main/classes/translit/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/main/classes/translit/src/com/ibm/icu/text/AnyTransliterator.java b/main/classes/translit/src/com/ibm/icu/text/AnyTransliterator.java
new file mode 100644
index 0000000..3986e91
--- /dev/null
+++ b/main/classes/translit/src/com/ibm/icu/text/AnyTransliterator.java
@@ -0,0 +1,408 @@
+/*
+*****************************************************************
+* Copyright (c) 2002-2009, 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;
+import java.util.Set;
+import java.util.Vector;
+/**
+ * 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<Integer, Transliterator> cache;
+
+    /**
+     * The target or target/variant string.
+     */
+    private String target;
+
+    /**
+     * The target script code.  Never USCRIPT_INVALID_CODE.
+     */
+    private int targetScript;
+    
+    /**
+     * Special code for handling width characters
+     */
+    private Transliterator widthFix = Transliterator.getInstance("[[:dt=Nar:][:dt=Wide:]] nfkd");
+
+    /**
+     * 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<Integer, Transliterator>();
+
+        target = theTarget;
+        if (theVariant.length() > 0) {
+            target = theTarget + VARIANT_SEP + theVariant;
+        }
+    }
+
+    /**
+     * @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 filter The Unicode filter.
+     * @param target2 the target name. 
+     * @param targetScript2 the script code corresponding to theTarget.
+     * @param widthFix2 The Transliterator width fix.
+     * @param cache2 The Map object for cache.
+     */
+    public AnyTransliterator(String id, UnicodeFilter filter, String target2,
+            int targetScript2, Transliterator widthFix2, Map<Integer, Transliterator> cache2) {
+        super(id, filter);
+        targetScript = targetScript2;
+        cache = cache2;
+        target = target2;
+    }
+
+    /**
+     * 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) {
+            if (isWide(targetScript)) {
+                return null;
+            } else {
+                return widthFix;
+            }
+        }
+
+        Integer key = new Integer(source);
+        Transliterator t = 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) {
+                if (!isWide(targetScript)) {
+                    Vector<Transliterator> v = new Vector<Transliterator>();
+                    v.add(widthFix);
+                    v.add(t);
+                    t = new CompoundTransliterator(v);
+                }
+                cache.put(key, t);
+            } else if (!isWide(targetScript)) {
+                return widthFix;
+            }
+        }
+
+        return t;
+    }
+
+    /**
+     * @param targetScript2
+     * @return
+     */
+    private boolean isWide(int script) {
+        return script == UScript.BOPOMOFO || script == UScript.HAN || script == UScript.HANGUL || script == UScript.HIRAGANA || script == UScript.KATAKANA;
+    }
+
+    /**
+     * 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() {
+
+        HashMap<String, Set<String>> seen = new HashMap<String, Set<String>>(); // old code used set, but was dependent on order
+
+        for (Enumeration<String> s = Transliterator.getAvailableSources(); s.hasMoreElements(); ) {
+            String source = s.nextElement();
+
+            // Ignore the "Any" source
+            if (source.equalsIgnoreCase(ANY)) continue;
+
+            for (Enumeration<String> t = Transliterator.getAvailableTargets(source);
+                 t.hasMoreElements(); ) {
+                String target = t.nextElement();
+
+                // Get the script code for the target.  If not a script, ignore.
+                int targetScript = scriptNameToCode(target);
+                if (targetScript == UScript.INVALID_CODE) {
+                    continue;
+                }
+
+                Set<String> seenVariants = seen.get(target);
+                if (seenVariants == null) {
+                    seen.put(target, seenVariants = new HashSet<String>());
+                }
+
+                for (Enumeration<String> v = Transliterator.getAvailableVariants(source, target);
+                     v.hasMoreElements(); ) {
+                    String variant = v.nextElement();
+                    
+                    // Only process each target/variant pair once
+                    if (seenVariants.contains(variant)) {
+                        continue;
+                    }
+                    seenVariants.add(variant);
+
+                    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){
+            ///CLOVER:OFF
+            return UScript.INVALID_CODE;
+            ///CLOVER:ON
+        }
+    }
+
+    //------------------------------------------------------------
+    // 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;
+        }
+    }
+
+    /**
+     * Temporary hack for registry problem. Needs to be replaced by better architecture.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public Transliterator safeClone() {
+        UnicodeFilter filter = getFilter();
+        if (filter != null && filter instanceof UnicodeSet) {
+            filter = new UnicodeSet((UnicodeSet)filter);
+        }
+        return new AnyTransliterator(getID(), filter, target, targetScript, widthFix, cache);
+    }
+}
+
diff --git a/main/classes/translit/src/com/ibm/icu/text/BreakTransliterator.java b/main/classes/translit/src/com/ibm/icu/text/BreakTransliterator.java
new file mode 100644
index 0000000..0247447
--- /dev/null
+++ b/main/classes/translit/src/com/ibm/icu/text/BreakTransliterator.java
@@ -0,0 +1,391 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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, " ");
+    }
+
+    ///CLOVER:OFF
+    // The following method is not called by anything and can't be reached
+    public String getInsertion() {
+        return insertion;
+    }
+    ///CLOVER:ON
+
+    ///CLOVER:OFF
+    // The following method is not called by anything and can't be reached
+    public void setInsertion(String insertion) {
+        this.insertion = insertion;
+    }
+    ///CLOVER:ON
+
+    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;
+    }
+
+    ///CLOVER:OFF
+    // The following method is not called by anything and can't be reached
+    public void setBreakIterator(BreakIterator bi) {
+        this.bi = bi;
+    }
+    ///CLOVER:ON
+
+    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/main/classes/translit/src/com/ibm/icu/text/CaseFoldTransliterator.java b/main/classes/translit/src/com/ibm/icu/text/CaseFoldTransliterator.java
new file mode 100644
index 0000000..3750522
--- /dev/null
+++ b/main/classes/translit/src/com/ibm/icu/text/CaseFoldTransliterator.java
@@ -0,0 +1,111 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, Google, International Business Machines Corporation     *
+ * and others. All Rights Reserved.                                            *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.io.IOException;
+
+import com.ibm.icu.impl.UCaseProps;
+
+/**
+ * A transliterator that performs locale-sensitive toLower()
+ * case mapping.
+ */
+class CaseFoldTransliterator extends Transliterator{
+
+    /**
+     * Package accessible ID.
+     */
+    static final String _ID = "Any-CaseFold";
+    
+    // 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 CaseFoldTransliterator();
+            }
+        });
+
+        Transliterator.registerSpecialInverse("CaseFold", "Upper", false);
+    }
+
+    private UCaseProps csp;
+    private ReplaceableContextIterator iter;
+    private StringBuffer result;
+
+    /**
+     * Constructs a transliterator.
+     */
+
+    public CaseFoldTransliterator() {
+        super(_ID, null);
+        try {
+            csp=UCaseProps.getSingleton();
+        } catch (IOException e) {
+            csp=null;
+        }
+        iter=new ReplaceableContextIterator();
+        result = new StringBuffer();
+    }
+
+    /**
+     * 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.toFullFolding(c, result, 0); // toFullFolding(int c, StringBuffer out, int options)
+
+            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/main/classes/translit/src/com/ibm/icu/text/CompoundTransliterator.java b/main/classes/translit/src/com/ibm/icu/text/CompoundTransliterator.java
new file mode 100644
index 0000000..3a71b66
--- /dev/null
+++ b/main/classes/translit/src/com/ibm/icu/text/CompoundTransliterator.java
@@ -0,0 +1,551 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.text;
+
+import java.util.Vector;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.UtilityExtensions;
+
+/**
+ * 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<Transliterator> list) {
+        this(list, 0);
+    }
+
+    CompoundTransliterator(Vector<Transliterator> list, int numAnonymousRBTs) {
+        super("", null);
+        trans = null;
+        init(list, FORWARD, false);
+        this.numAnonymousRBTs = numAnonymousRBTs;
+        // assume caller will fixup ID
+    }
+
+    /**
+     * Internal method for safeClone...
+     * @param id
+     * @param filter2 
+     * @param trans2
+     * @param numAnonymousRBTs2
+     */
+    CompoundTransliterator(String id, UnicodeFilter filter2, Transliterator[] trans2, int numAnonymousRBTs2) {
+        super(id, filter2);
+        trans = trans2;
+        numAnonymousRBTs = numAnonymousRBTs2;
+    }
+    
+    /**
+     * 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<Transliterator> 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] = 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;
+        ///CLOVER:OFF
+        if (DEBUG) {
+            log = new StringBuffer("CompoundTransliterator{" + getID() +
+                                   (incremental ? "}i: IN=" : "}: IN="));
+            UtilityExtensions.formatInput(log, text, index);
+            System.out.println(Utility.escape(log.toString()));
+        }
+        ///CLOVER:ON
+
+        // 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
+                ///CLOVER:OFF
+                if (DEBUG) {
+                    System.out.println("CompoundTransliterator[" + i +
+                                       ".." + (trans.length-1) +
+                                       (incremental ? "]i: " : "]: ") +
+                                       UtilityExtensions.formatInput(text, index) +
+                                       " (NOTHING TO DO)");
+                }
+                ///CLOVER:ON
+                break;
+            }
+
+            ///CLOVER:OFF
+            if (DEBUG) {
+                log.setLength(0);
+                log.append("CompoundTransliterator[" + i + "=" +
+                           trans[i].getID() +
+                           (incremental ? "]i: " : "]: "));
+                UtilityExtensions.formatInput(log, text, index);
+            }
+            ///CLOVER:ON
+
+            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());
+            }
+
+            ///CLOVER:OFF
+            if (DEBUG) {
+                log.append(" => ");
+                UtilityExtensions.formatInput(log, text, index);
+                System.out.println(Utility.escape(log.toString()));
+            }
+            ///CLOVER:ON
+
+            // 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;
+
+        ///CLOVER:OFF
+        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()));
+        }
+        ///CLOVER:ON
+    }
+
+    /**
+     * 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);
+    }
+
+    /**
+     * Temporary hack for registry problem. Needs to be replaced by better architecture.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public Transliterator safeClone() {
+        UnicodeFilter filter = getFilter();
+        if (filter != null && filter instanceof UnicodeSet) {
+            filter = new UnicodeSet((UnicodeSet)filter);
+        }
+        return new CompoundTransliterator(getID(), filter, trans, numAnonymousRBTs);
+    }
+}
diff --git a/main/classes/translit/src/com/ibm/icu/text/EscapeTransliterator.java b/main/classes/translit/src/com/ibm/icu/text/EscapeTransliterator.java
new file mode 100644
index 0000000..69e4cc0
--- /dev/null
+++ b/main/classes/translit/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/main/classes/translit/src/com/ibm/icu/text/FunctionReplacer.java b/main/classes/translit/src/com/ibm/icu/text/FunctionReplacer.java
new file mode 100644
index 0000000..bf66f3a
--- /dev/null
+++ b/main/classes/translit/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/main/classes/translit/src/com/ibm/icu/text/LowercaseTransliterator.java b/main/classes/translit/src/com/ibm/icu/text/LowercaseTransliterator.java
new file mode 100644
index 0000000..04f23a2
--- /dev/null
+++ b/main/classes/translit/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/main/classes/translit/src/com/ibm/icu/text/NameUnicodeTransliterator.java b/main/classes/translit/src/com/ibm/icu/text/NameUnicodeTransliterator.java
new file mode 100644
index 0000000..b567ced
--- /dev/null
+++ b/main/classes/translit/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/main/classes/translit/src/com/ibm/icu/text/NormalizationTransliterator.java b/main/classes/translit/src/com/ibm/icu/text/NormalizationTransliterator.java
new file mode 100644
index 0000000..f2f119c
--- /dev/null
+++ b/main/classes/translit/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/main/classes/translit/src/com/ibm/icu/text/NullTransliterator.java b/main/classes/translit/src/com/ibm/icu/text/NullTransliterator.java
new file mode 100644
index 0000000..3c248c6
--- /dev/null
+++ b/main/classes/translit/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/main/classes/translit/src/com/ibm/icu/text/RemoveTransliterator.java b/main/classes/translit/src/com/ibm/icu/text/RemoveTransliterator.java
new file mode 100644
index 0000000..3d02002
--- /dev/null
+++ b/main/classes/translit/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/main/classes/translit/src/com/ibm/icu/text/RuleBasedTransliterator.java b/main/classes/translit/src/com/ibm/icu/text/RuleBasedTransliterator.java
new file mode 100644
index 0000000..ed2fc9f
--- /dev/null
+++ b/main/classes/translit/src/com/ibm/icu/text/RuleBasedTransliterator.java
@@ -0,0 +1,483 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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<String, char[]>();
+            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<String, char[]> 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);
+    }
+
+    /**
+     * Temporary hack for registry problem. Needs to be replaced by better architecture.
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public Transliterator safeClone() {
+        UnicodeFilter filter = getFilter();
+        if (filter != null && filter instanceof UnicodeSet) {
+            filter = new UnicodeSet((UnicodeSet)filter);
+        }
+        return new RuleBasedTransliterator(getID(), data, filter);
+    }
+}
+
+
diff --git a/main/classes/translit/src/com/ibm/icu/text/StringMatcher.java b/main/classes/translit/src/com/ibm/icu/text/StringMatcher.java
new file mode 100644
index 0000000..eefcc4c
--- /dev/null
+++ b/main/classes/translit/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/main/classes/translit/src/com/ibm/icu/text/StringReplacer.java b/main/classes/translit/src/com/ibm/icu/text/StringReplacer.java
new file mode 100644
index 0000000..5701631
--- /dev/null
+++ b/main/classes/translit/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/main/classes/translit/src/com/ibm/icu/text/TitlecaseTransliterator.java b/main/classes/translit/src/com/ibm/icu/text/TitlecaseTransliterator.java
new file mode 100644
index 0000000..71aef2e
--- /dev/null
+++ b/main/classes/translit/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/main/classes/translit/src/com/ibm/icu/text/TransformTransliterator.java b/main/classes/translit/src/com/ibm/icu/text/TransformTransliterator.java
new file mode 100644
index 0000000..311bf3c
--- /dev/null
+++ b/main/classes/translit/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/main/classes/translit/src/com/ibm/icu/text/TransliterationRule.java b/main/classes/translit/src/com/ibm/icu/text/TransliterationRule.java
new file mode 100644
index 0000000..907e1ac
--- /dev/null
+++ b/main/classes/translit/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/main/classes/translit/src/com/ibm/icu/text/TransliterationRuleSet.java b/main/classes/translit/src/com/ibm/icu/text/TransliterationRuleSet.java
new file mode 100644
index 0000000..485aaa3
--- /dev/null
+++ b/main/classes/translit/src/com/ibm/icu/text/TransliterationRuleSet.java
@@ -0,0 +1,256 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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<TransliterationRule> 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<TransliterationRule>();
+        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<TransliterationRule> v = new Vector<TransliterationRule>(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 = 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 = 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 = 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 = ruleVector.elementAt(i);
+            if (getTarget) {
+                r.addTargetSetTo(set);
+            } else {
+                r.addSourceSetTo(set);
+            }
+        }
+        return set;
+    }
+}
diff --git a/main/classes/translit/src/com/ibm/icu/text/Transliterator.java b/main/classes/translit/src/com/ibm/icu/text/Transliterator.java
new file mode 100644
index 0000000..dad1c0a
--- /dev/null
+++ b/main/classes/translit/src/com/ibm/icu/text/Transliterator.java
@@ -0,0 +1,1922 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-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.impl.UtilityExtensions;
+import com.ibm.icu.text.RuleBasedTransliterator.Data;
+import com.ibm.icu.text.TransliteratorIDParser.SingleID;
+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<CaseInsensitiveString, String> 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 = 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<SingleID> list = new Vector<SingleID>();
+        UnicodeSet[] globalFilter = new UnicodeSet[1];
+        if (!TransliteratorIDParser.parseCompoundID(ID, dir, canonID, list, globalFilter)) {
+            throw new IllegalArgumentException("Invalid ID " + ID);
+        }
+
+        Vector<Transliterator> translits = TransliteratorIDParser.instantiateList(list);
+
+        // assert(list.size() > 0);
+        Transliterator t = null;
+        if (list.size() > 1 || canonID.indexOf(";") >= 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(translits);
+        }
+        else {
+            t = translits.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, 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) + ";"
+                        + parser.idBlockVector.get(0));
+            } else {
+                t = getInstance(parser.idBlockVector.get(0));
+            }
+
+            if (t != null) {
+                t.setID(ID);
+            }
+        }
+        else {
+            Vector<Transliterator> transliterators = new Vector<Transliterator>();
+            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 = 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()) {
+                    Data 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<? extends Transliterator> 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<String> 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<String> 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<String> 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<String> 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<CaseInsensitiveString, String>();
+        /* 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();
+        CaseFoldTransliterator.register();
+        UnicodeNameTransliterator.register();
+        NameUnicodeTransliterator.register();
+        NormalizationTransliterator.register();
+        BreakTransliterator.register();
+        AnyTransliterator.register(); // do this last!
+    }
+    
+    /**
+     * Register the script-based "Any" transliterators: Any-Latin, Any-Greek
+     * @internal
+     * @deprecated This API is ICU internal only.
+     */
+    public static void registerAny() {
+        AnyTransliterator.register();
+    }
+
+    /**
+     * 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/main/classes/translit/src/com/ibm/icu/text/TransliteratorIDParser.java b/main/classes/translit/src/com/ibm/icu/text/TransliteratorIDParser.java
new file mode 100644
index 0000000..d329a2e
--- /dev/null
+++ b/main/classes/translit/src/com/ibm/icu/text/TransliteratorIDParser.java
@@ -0,0 +1,759 @@
+/*
+**********************************************************************
+*   Copyright (c) 2002-2009, International Business Machines Corporation
+*   and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   01/14/2002  aliu        Creation.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+
+import java.text.ParsePosition;
+import java.util.Hashtable;
+import java.util.Vector;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.util.CaseInsensitiveString;
+
+/**
+ * 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<CaseInsensitiveString, String> SPECIAL_INVERSES =
+        new Hashtable<CaseInsensitiveString, String>();
+
+    /**
+     * 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<SingleID> 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 = 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;
+    }
+
+    /**
+     * Returns the list of Transliterator objects for the
+     * given list of SingleID objects.
+     * 
+     * @param ids list vector of SingleID objects.
+     * @return Actual transliterators for the list of SingleIDs
+     */
+    static Vector<Transliterator> instantiateList(Vector<SingleID> ids) {
+        Transliterator t;
+        Vector<Transliterator> translits = new Vector<Transliterator>();
+        for (SingleID single : ids) {
+            if (single.basicID.length() == 0) {
+                continue;
+            }
+            t = single.getInstance();
+            if (t == null) {
+                throw new IllegalArgumentException("Illegal ID " + single.canonID);
+            }
+            translits.add(t);
+        }
+
+        // An empty list is equivalent to a Null transliterator.
+        if (translits.size() == 0) {
+            t = Transliterator.getBasicInstance("Any-Null", null);
+            if (t == null) {
+                // Should never happen
+                throw new IllegalArgumentException("Internal error; cannot instantiate Any-Null");
+            }
+            translits.add(t);
+        }
+        return translits;
+    }
+
+    /**
+     * 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 = 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/main/classes/translit/src/com/ibm/icu/text/TransliteratorParser.java b/main/classes/translit/src/com/ibm/icu/text/TransliteratorParser.java
new file mode 100644
index 0000000..b541a74
--- /dev/null
+++ b/main/classes/translit/src/com/ibm/icu/text/TransliteratorParser.java
@@ -0,0 +1,1558 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001-2009, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*/
+package com.ibm.icu.text;
+
+import java.text.ParsePosition;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Vector;
+
+import com.ibm.icu.impl.IllegalIcuArgumentException;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.RuleBasedTransliterator.Data;
+
+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<Data> dataVector;
+
+    /**
+     * PUBLIC data member.
+     * A Vector of Strings containing all of the ID blocks in the rule set
+     */
+    public Vector<String> idBlockVector;
+
+    /**
+     * The current data object for which we are parsing rules
+     */
+    private 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<Object> variablesVector;
+
+    /**
+     * Temporary table of variable names.  When parsing is complete, this is
+     * copied into data.variableNames.
+     */
+    private Hashtable<String, char[]> 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<StringMatcher> 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 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) {
+                    ///CLOVER:OFF
+                    // isSegment is always false
+                    if (isSegment) {
+                        syntaxError("Unclosed segment", rule, start);
+                    }
+                    ///CLOVER:ON
+                    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
+                    {
+                        ///CLOVER:OFF
+                        // isSegment is always false
+                        if (isSegment && buf.length() == bufStart) {
+                            // The */+ immediately follows '('
+                            syntaxError("Misplaced quantifier", rule, start);
+                            break;
+                        }
+                        ///CLOVER:ON
+ 
+                        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) {
+                            final String precontext = pos < 50 ? rule.substring(0, pos) : "..." + rule.substring(pos - 50, pos);
+                            final String postContext = limit-pos <= 50 ? rule.substring(pos, limit) : rule.substring(pos, pos+50) + "...";
+                            throw (RuntimeException)
+                                new IllegalIcuArgumentException("Failure in rule: " + precontext + "$$$"
+                                        + postContext).initCause(e);
+                        }
+                        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 IllegalIcuArgumentException if there is a syntax error in the
+     * rules
+     */
+    void parseRules(RuleBody ruleArray, int dir) {
+        boolean parsingIDs = true;
+        int ruleCount = 0;
+
+        dataVector = new Vector<Data>();
+        idBlockVector = new Vector<String>();
+        curData = null;
+        direction = dir;
+        compoundFilter = null;
+        variablesVector = new Vector<Object>();
+        variableNames = new Hashtable<String, char[]>();
+        parseData = new ParseData();
+
+        List<RuntimeException> errors = new ArrayList<RuntimeException>();
+        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) {
+                        IllegalIcuArgumentException icuEx = new IllegalIcuArgumentException("\nMore than 30 errors; further messages squelched");
+                        icuEx.initCause(e);
+                        errors.add(icuEx);
+                        break main;
+                    }
+                    e.fillInStackTrace();
+                    errors.add(e);
+                    ++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++) {
+            Data data = dataVector.get(i);
+            data.variables = new Object[variablesVector.size()];
+            variablesVector.copyInto(data.variables);
+            data.variableNames = new Hashtable<String, char[]>();
+            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 IllegalIcuArgumentException("Compound filters misplaced");
+                }
+            }
+
+            for (int i = 0; i < dataVector.size(); i++) {
+                Data data = dataVector.get(i);
+                data.ruleSet.freeze();
+            }
+
+            if (idBlockVector.size() == 1 && (idBlockVector.get(0)).length() == 0)
+                idBlockVector.remove(0);
+
+        } catch (IllegalArgumentException e) {
+            e.fillInStackTrace();
+            errors.add(e);
+        }
+
+        if (errors.size() != 0) {
+            for (int i = errors.size()-1; i > 0; --i) {
+                RuntimeException previous = errors.get(i-1);
+                while (previous.getCause() != null) {
+                    previous = (RuntimeException) previous.getCause(); // chain specially
+                }
+                previous.initCause(errors.get(i));
+            }
+            throw errors.get(0);
+            // if initCause not supported: 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<StringMatcher>();
+
+        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 IllegalIcuArgumentException("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 IllegalIcuArgumentException("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 IllegalIcuArgumentException("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 IllegalIcuArgumentException(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 IllegalIcuArgumentException if the name is unknown.
+     */
+    private void appendVariableDef(String name, StringBuffer buf) {
+        char[] ch = 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(--variableLimit);
+            } else {
+                throw new IllegalIcuArgumentException("Undefined variable $"
+                                                   + name);
+            }
+        } else {
+            buf.append(ch);
+        }
+    }
+}
+
+//eof
diff --git a/main/classes/translit/src/com/ibm/icu/text/TransliteratorRegistry.java b/main/classes/translit/src/com/ibm/icu/text/TransliteratorRegistry.java
new file mode 100644
index 0000000..f4f996c
--- /dev/null
+++ b/main/classes/translit/src/com/ibm/icu/text/TransliteratorRegistry.java
@@ -0,0 +1,917 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001-2009, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   08/19/2001  aliu        Creation.
+**********************************************************************
+*/
+
+package com.ibm.icu.text;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.Vector;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.text.RuleBasedTransliterator.Data;
+import com.ibm.icu.util.CaseInsensitiveString;
+import com.ibm.icu.util.UResourceBundle;
+
+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<CaseInsensitiveString, Object[]> 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<CaseInsensitiveString, Hashtable<CaseInsensitiveString, Vector<CaseInsensitiveString>>> specDAG;
+
+    /**
+     * Vector of public full IDs (CaseInsensitiveString objects).
+     */
+    private Vector<CaseInsensitiveString> 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){
+                ///CLOVER:OFF
+                // The constructor is called from multiple private methods
+                //  that protects an invalid scriptName
+                scriptName = null;
+                ///CLOVER:ON
+            }
+            // 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<String> idBlockVector;
+        private Vector<Data> dataVector;
+        private UnicodeSet compoundFilter;
+
+        public CompoundRBTEntry(String theID, Vector<String> theIDBlockVector,
+                                Vector<Data> theDataVector,
+                                UnicodeSet theCompoundFilter) {
+            ID = theID;
+            idBlockVector = theIDBlockVector;
+            dataVector = theDataVector;
+            compoundFilter = theCompoundFilter;
+        }
+
+        public Transliterator getInstance() {
+            Vector<Transliterator> transliterators = new Vector<Transliterator>();
+            int passNumber = 1;
+
+            int limit = Math.max(idBlockVector.size(), dataVector.size());
+            for (int i = 0; i < limit; i++) {
+                if (i < idBlockVector.size()) {
+                    String idBlock = idBlockVector.get(i);
+                    if (idBlock.length() > 0)
+                        transliterators.add(Transliterator.getInstance(idBlock));
+                }
+                if (i < dataVector.size()) {
+                    Data 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<CaseInsensitiveString, Object[]>();
+        specDAG = new Hashtable<CaseInsensitiveString, Hashtable<CaseInsensitiveString, Vector<CaseInsensitiveString>>>();
+        availableIDs = new Vector<CaseInsensitiveString>();
+    }
+
+    /**
+     * 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<? extends Transliterator> 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<String> {
+        Enumeration<CaseInsensitiveString> en;
+
+        public IDEnumeration(Enumeration<CaseInsensitiveString> e) {
+            en = e;
+        }
+
+        public boolean hasMoreElements() {
+            return en != null && en.hasMoreElements();
+        }
+
+        public String nextElement() {
+            return (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<String> 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<String> 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<String> getAvailableTargets(String source) {
+        CaseInsensitiveString cisrc = new CaseInsensitiveString(source);
+        Hashtable<CaseInsensitiveString, Vector<CaseInsensitiveString>> targets = 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<String> getAvailableVariants(String source, String target) {
+        CaseInsensitiveString cisrc = new CaseInsensitiveString(source);
+        CaseInsensitiveString citrg = new CaseInsensitiveString(target);
+        Hashtable<CaseInsensitiveString, Vector<CaseInsensitiveString>> targets = specDAG.get(cisrc);
+        if (targets == null) {
+            return new IDEnumeration(null);
+        }
+        Vector<CaseInsensitiveString> variants = 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);
+        Object[] arrayOfObj;
+
+        // Store the entry within an array so it can be modified later
+        if (entry instanceof Object[]) {
+            arrayOfObj = (Object[])entry;
+        } else {
+            arrayOfObj = new Object[] { entry };
+        }
+
+        registry.put(ciID, arrayOfObj);
+        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<CaseInsensitiveString, Vector<CaseInsensitiveString>> targets = specDAG.get(cisrc);
+        if (targets == null) {
+            targets = new Hashtable<CaseInsensitiveString, Vector<CaseInsensitiveString>>();
+            specDAG.put(cisrc, targets);
+        }
+        Vector<CaseInsensitiveString> variants = targets.get(citrg);
+        if (variants == null) {
+            variants = new Vector<CaseInsensitiveString>();
+            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<CaseInsensitiveString, Vector<CaseInsensitiveString>> targets = specDAG.get(cisrc);
+        if (targets == null) {
+            return; // should never happen for valid s-t/v
+        }
+        Vector<CaseInsensitiveString> variants = 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);
+        ///CLOVER:OFF
+        if (DEBUG) {
+            System.out.println("TransliteratorRegistry.findInDynamicStore:" +
+                               ID);
+        }
+        ///CLOVER:ON
+        return 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) {
+        ///CLOVER:OFF
+        if (DEBUG) {
+            String ID = TransliteratorIDParser.STVtoID(src.get(), trg.get(), variant);
+            System.out.println("TransliteratorRegistry.findInStaticStore:" +
+                               ID);
+        }
+        ///CLOVER:ON
+        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) {
+                ///CLOVER:OFF
+                if (DEBUG) System.out.println("missing resource: " + e);
+                ///CLOVER:ON
+            }
+        }
+
+        // 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.
+     */
+    @SuppressWarnings("unchecked")
+    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 AnyTransliterator) {
+                AnyTransliterator temp = (AnyTransliterator) entry;
+                return temp.safeClone();
+            } else if (entry instanceof RuleBasedTransliterator) {
+                RuleBasedTransliterator temp = (RuleBasedTransliterator) entry;
+                return temp.safeClone();
+            } else if (entry instanceof CompoundTransliterator) {
+                CompoundTransliterator temp = (CompoundTransliterator) entry;
+                return temp.safeClone();
+            } 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) + ";"
+                            + parser.idBlockVector.get(0));
+                } else {
+                    entryWrapper[0] = new AliasEntry(parser.idBlockVector.get(0));
+                }
+            }
+            else {
+                entryWrapper[0] = new CompoundRBTEntry(ID, parser.idBlockVector, parser.dataVector,
+                        parser.compoundFilter);
+            }
+        }
+    }
+}
+
+//eof
diff --git a/main/classes/translit/src/com/ibm/icu/text/UnescapeTransliterator.java b/main/classes/translit/src/com/ibm/icu/text/UnescapeTransliterator.java
new file mode 100644
index 0000000..b914d1e
--- /dev/null
+++ b/main/classes/translit/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/main/classes/translit/src/com/ibm/icu/text/UnicodeNameTransliterator.java b/main/classes/translit/src/com/ibm/icu/text/UnicodeNameTransliterator.java
new file mode 100644
index 0000000..60fe496
--- /dev/null
+++ b/main/classes/translit/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/main/classes/translit/src/com/ibm/icu/text/UppercaseTransliterator.java b/main/classes/translit/src/com/ibm/icu/text/UppercaseTransliterator.java
new file mode 100644
index 0000000..1d3317e
--- /dev/null
+++ b/main/classes/translit/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/main/classes/translit/translit-build.launch b/main/classes/translit/translit-build.launch
new file mode 100644
index 0000000..9678f7d
--- /dev/null
+++ b/main/classes/translit/translit-build.launch
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<listAttribute key="org.eclipse.debug.translit.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j-translit/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.translit.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j-translit/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j-translit"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.running" value="true"/>
+<mapEntry key="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-translit/build.xml}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/main/shared/.project b/main/shared/.project
new file mode 100644
index 0000000..77b1a39
--- /dev/null
+++ b/main/shared/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>icu4j-shared</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+	</buildSpec>
+	<natures>
+	</natures>
+</projectDescription>
diff --git a/main/shared/build/common-targets.xml b/main/shared/build/common-targets.xml
new file mode 100644
index 0000000..3db2fc6
--- /dev/null
+++ b/main/shared/build/common-targets.xml
@@ -0,0 +1,218 @@
+<!--
+*******************************************************************************
+* Copyright (C) 2009, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+-->
+<project name="common-targets" basedir=".">
+    <dirname property="common-targets.dir" file="${ant.file.common-targets}"/>
+    <property file="${common-targets.dir}/locations.properties"/>
+    <property file="${common-targets.dir}/common.properties"/>
+
+    <!-- common targets -->
+
+    <target name="@clean">
+        <delete dir="${out.dir}"/>
+    </target>
+
+    <target name="@compile">
+        <echo message="--- java compiler arguments ------------------------"/>
+        <echo message="source dir:     ${basedir}/${src.dir}"/>
+        <echo message="output dir:     ${basedir}/${bin.dir}"/>
+        <echo message="classpath:      ${toString:javac.classpathref}"/>
+        <echo message="source:         ${javac.source}"/>
+        <echo message="target:         ${javac.target}"/>
+        <echo message="debug:          ${javac.debug}"/>
+        <echo message="encoding:       ${javac.encoding}"/>
+        <echo message="compiler arg:   ${javac.compilerarg}"/>
+        <echo message="----------------------------------------------------"/>
+
+        <mkdir dir="${bin.dir}"/>
+        <javac
+            srcdir="${src.dir}"
+            destdir="${bin.dir}"
+            classpathref="javac.classpathref"
+            source="${javac.source}"
+            target="${javac.target}"
+            debug="${javac.debug}">
+            <compilerarg value="${javac.compilerarg}"/>
+        </javac>
+    </target>
+
+    <target name="@copy">
+        <mkdir dir="${bin.dir}"/>
+        <copy todir="${bin.dir}">
+            <fileset dir="${src.dir}" defaultexcludes="yes">
+                <exclude name="**/*.java"/>
+            </fileset>
+        </copy>
+    </target>
+
+    <target name="@jar">
+        <mkdir dir="${jar.dir}"/>
+
+        <copy file="manifest.stub" todir="${out.dir}">
+            <filterset>
+                <filter token="SPECVERSION" value="${jar.spec.version}"/>
+                <filter token="IMPLVERSION" value="${jar.impl.version}"/>
+                <filter token="COPYRIGHT" value="${jar.copyright.info}"/>
+            </filterset>
+        </copy>
+
+        <jar jarfile="${jar.file}" manifest="${out.dir}/manifest.stub" compress="true">
+            <fileset dir="${bin.dir}" includes="**/*"/>
+            <fileset dir="${shared.dir}/licenses">
+                <include name="license.html"/>
+                <include name="unicode-license.txt"/>
+            </fileset>
+        </jar>
+    </target>
+
+    <target name="@build-all">
+        <antcall target="_all.${ant.project.name}"/>
+    </target>
+
+    <!-- Dependencies -->
+
+    <!-- collate -->
+    <path id="javac.classpathref.collate">
+        <pathelement location="${icu4j.core.jar}"/>
+    </path>
+
+    <target name="_all.collate" depends="_all.core">
+        <ant dir="${icu4j.collate.dir}" inheritAll="false"/>
+    </target>
+
+    <!-- core -->
+    <path id="javac.classpathref.core"/>
+
+    <target name="_all.core">
+        <ant dir="${icu4j.core.dir}" inheritAll="false"/>
+    </target>
+
+    <!-- charset -->
+    <path id="javac.classpathref.charset">
+        <pathelement location="${icu4j.core.jar}"/>
+    </path>
+
+    <target name="_all.charset" depends="_all.core">
+        <ant dir="${icu4j.charset.dir}" inheritAll="false"/>
+    </target>
+
+    <!-- localespi -->
+    <path id="javac.classpathref.localespi">
+        <pathelement location="${icu4j.core.jar}"/>
+        <pathelement location="${icu4j.collate.jar}"/>
+    </path>
+
+    <target name="_all.localespi" depends="_all.core, _all.collate">
+        <ant dir="${icu4j.localespi.dir}" inheritAll="false"/>
+    </target>
+
+    <!-- translit -->
+    <path id="javac.classpathref.translit">
+        <pathelement location="${icu4j.core.jar}"/>
+        <pathelement location="${icu4j.translit.jar}"/>
+    </path>
+
+    <target name="_all.translit" depends="_all.core">
+        <ant dir="${icu4j.translit.dir}" inheritAll="false"/>
+    </target>
+
+    <!-- test-framework -->
+    <path id="javac.classpathref.test-framework">
+        <pathelement location="${icu4j.core.jar}"/>
+    </path>
+
+    <target name="_all.test-framework" depends="_all.core">
+        <ant dir="${icu4j.test-framework.dir}" inheritAll = "false"/>
+    </target>
+
+    <!-- core-tests -->
+    <path id="javac.classpathref.core-tests">
+        <pathelement location="${icu4j.core.jar}"/>
+        <pathelement location="${icu4j.test-framework.jar}"/>
+    </path>
+
+    <target name="_all.core-tests" depends="_all.core, _all.test-framework">
+        <ant dir="${icu4j.core-tests.dir}" inheritAll="false"/>
+    </target>
+
+    <!-- collate-tests -->
+    <path id="javac.classpathref.collate-tests">
+        <pathelement location="${icu4j.core.jar}"/>
+        <pathelement location="${icu4j.collate.jar}"/>
+        <pathelement location="${icu4j.test-framework.jar}"/>
+    </path>
+
+    <target name="_all.collate-tests" depends="_all.core, _all.collate, _all.test-framework">
+        <ant dir="${icu4j.collate-tests.dir}" inheritAll="false"/>
+    </target>
+
+    <!-- charset-tests -->
+    <path id="javac.classpathref.charset-tests">
+        <pathelement location="${icu4j.core.jar}"/>
+        <pathelement location="${icu4j.charset.jar}"/>
+        <pathelement location="${icu4j.test-framework.jar}"/>
+    </path>
+
+    <target name="_all.charset-tests" depends="_all.core, _all.charset, _all.test-framework">
+        <ant dir="${icu4j.charset-tests.dir}" inheritAll="false"/>
+    </target>
+
+    <!-- localespi-tests -->
+    <path id="javac.classpathref.localespi-tests">
+        <pathelement location="${icu4j.core.jar}"/>
+	<pathelement location="${icu4j.collate.jar}"/>
+        <pathelement location="${icu4j.localespi.jar}"/>
+        <pathelement location="${icu4j.test-framework.jar}"/>
+    </path>
+
+    <target name="_all.localespi-tests" depends="_all.core, _all.collate, _all.localespi, _all.test-framework">
+        <ant dir="${icu4j.localespi-tests.dir}" inheritAll="false"/>
+    </target>
+
+    <!-- translit-tests -->
+    <path id="javac.classpathref.translit-tests">
+        <pathelement location="${icu4j.core.jar}"/>
+        <pathelement location="${icu4j.translit.jar}"/>
+        <pathelement location="${icu4j.test-framework.jar}"/>
+    </path>
+
+    <target name="_all.translit-tests" depends="_all.core, _all.translit, _all.test-framework">
+        <ant dir="${icu4j.translit-tests.dir}" inheritAll="false"/>
+    </target>
+
+    <!-- build-tools -->
+    <path id="javac.classpathref.build-tools"/>
+
+    <target name="_all.build-tools">
+        <ant dir="${icu4j.build-tools.dir}" inheritAll="false"/>
+    </target>
+
+    <!-- tools -->
+    <path id="javac.classpathref.tools">
+        <pathelement location="${icu4j.core.jar}"/>
+        <pathelement location="${icu4j.collate.jar}"/>
+        <pathelement location="${icu4j.translit.jar}"/>
+        <pathelement location="${icu4j.test-framework.jar}"/>
+        <pathelement location="${icu4j.core-tests.jar}"/>
+        <pathelement location="${icu4j.translit-tests.jar}"/>
+    </path>
+
+    <target name="_all.tools" depends="_all.core, _all.collate, _all.translit, _all.test-framework, _all.core-tests, _all.translit-tests">
+        <ant dir="${icu4j.tools.dir}" inheritAll="false"/>
+    </target>
+
+    <!-- demos -->
+    <path id="javac.classpathref.demos">
+        <pathelement location="${icu4j.core.jar}"/>
+        <pathelement location="${icu4j.translit.jar}"/>
+        <pathelement location="${icu4j.charset.jar}"/>
+    </path>
+
+    <target name="_all.demos" depends="_all.core, _all.translit, _all.charset">
+        <ant dir="${icu4j.demos.dir}" inheritAll="false"/>
+    </target>
+
+</project>
diff --git a/main/shared/build/common.properties b/main/shared/build/common.properties
new file mode 100644
index 0000000..98d26a8
--- /dev/null
+++ b/main/shared/build/common.properties
@@ -0,0 +1,52 @@
+#*******************************************************************************
+#* Copyright (C) 2009, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+
+# Version numbers, etc.
+icu4j.spec.version = 4.3.2
+icu4j.impl.version = 4.3.2
+current.year = 2009
+
+corp = IBM Corporation
+copyright = Copyright 2000-${current.year}, International Business Machines Corporation and others.  All Rights Reserved.
+
+# Standard directory structure
+src.dir = src
+out.dir = out
+bin.dir = ${out.dir}/bin
+jar.dir = ${out.dir}/lib
+
+# Default java compiler options
+javac.source = 1.5
+javac.target = 1.5
+javac.debug = on
+javac.encoding = ascii
+javac.compilerarg = -Xlint:none
+
+# Manifest attributes
+jar.spec.version = ${icu4j.spec.version}
+jar.impl.version = ${icu4j.impl.version}
+jar.copyright.info = ${copyright}
+
+# Jar locations
+icu4j.data.jar = ${shared.dir}/data/icudata.jar
+icu4j.testdata.jar = ${shared.dir}/data/testdata.jar
+
+icu4j.core.jar = ${icu4j.core.dir}/${jar.dir}/icu4j-core.jar
+icu4j.collate.jar = ${icu4j.collate.dir}/${jar.dir}/icu4j-collate.jar
+icu4j.charset.jar = ${icu4j.charset.dir}/${jar.dir}/icu4j-charsets.jar
+icu4j.localespi.jar = ${icu4j.localespi.dir}/${jar.dir}/icu4j-localespi.jar
+icu4j.translit.jar = ${icu4j.translit.dir}/${jar.dir}/icu4j-translit.jar
+
+icu4j.test-framework.jar = ${icu4j.test-framework.dir}/${jar.dir}/icu4j-test-framework.jar
+icu4j.core-tests.jar = ${icu4j.core-tests.dir}/${jar.dir}/icu4j-core-tests.jar
+icu4j.collate-tests.jar = ${icu4j.collate-tests.dir}/${jar.dir}/icu4j-collate-tests.jar
+icu4j.charset-tests.jar = ${icu4j.charset-tests.dir}/${jar.dir}/icu4j-charset-tests.jar
+icu4j.localespi-tests.jar = ${icu4j.localespi-tests.dir}/${jar.dir}/icu4j-localespi-tests.jar
+icu4j.translit-tests.jar = ${icu4j.translit-tests.dir}/${jar.dir}/icu4j-translit-tests.jar
+
+icu4j.build-tools.jar = ${icu4j.build-tools.dir}/${jar.dir}/icu4j-build-tools.jar
+icu4j.tools.jar = ${icu4j.tools.dir}/${jar.dir}/icu4j-tools.jar
+
+icu4j.demos.jar = ${icu4j.demos.dir}/${jar.dir}/icu4jdemos.jar
diff --git a/main/shared/build/eclipse-dummy.jar b/main/shared/build/eclipse-dummy.jar
new file mode 100644
index 0000000..dfa9c2e
--- /dev/null
+++ b/main/shared/build/eclipse-dummy.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:02dfbc834742ea2995d848967e1c9ffaac04152656ca73500e91aacfe5d4c8be
+size 933
diff --git a/main/shared/build/locations-eclipse.properties b/main/shared/build/locations-eclipse.properties
new file mode 100644
index 0000000..f009df5
--- /dev/null
+++ b/main/shared/build/locations-eclipse.properties
@@ -0,0 +1,23 @@
+#*******************************************************************************
+#* Copyright (C) 2009, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+shared.dir = ${workspace_loc:/icu4j-shared}
+
+icu4j.core.dir = ${workspace_loc:/icu4j-core}
+icu4j.charset.dir = ${workspace_loc:/icu4j-charset}
+icu4j.collate.dir = ${workspace_loc:/icu4j-collate}
+icu4j.localespi.dir = ${workspace_loc:/icu4j-localespi}
+icu4j.translit.dir = ${workspace_loc:/icu4j-translit}
+
+icu4j.test-framework.dir = ${workspace_loc:/icu4j-test-framework}
+icu4j.core-tests.dir = ${workspace_loc:/icu4j-core-tests}
+icu4j.collate-tests.dir = ${workspace_loc:/icu4j-collate-tests}
+icu4j.charset-tests.dir = ${workspace_loc:/icu4j-charset-tests}
+icu4j.localespi-tests.dir = ${workspace_loc:/icu4j-localespi-tests}
+icu4j.translit-tests.dir = ${workspace_loc:/icu4j-translit-tests}
+
+icu4j.build-tools.dir = ${workspace_loc:/icu4j-build-tools}
+icu4j.tools.dir = ${workspace_loc:/icu4j-tools}
+
+icu4j.demos.dir = ${workspace_loc:/icu4j-demos}
diff --git a/main/shared/build/locations.properties b/main/shared/build/locations.properties
new file mode 100644
index 0000000..f67526a
--- /dev/null
+++ b/main/shared/build/locations.properties
@@ -0,0 +1,22 @@
+#*******************************************************************************
+#* Copyright (C) 2009, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+
+icu4j.collate.dir = ${shared.dir}/../classes/collate
+icu4j.core.dir = ${shared.dir}/../classes/core
+icu4j.charset.dir = ${shared.dir}/../classes/charset
+icu4j.localespi.dir = ${shared.dir}/../classes/localespi
+icu4j.translit.dir = ${shared.dir}/../classes/translit
+
+icu4j.test-framework.dir = ${shared.dir}/../tests/framework
+icu4j.core-tests.dir = ${shared.dir}/../tests/core
+icu4j.collate-tests.dir = ${shared.dir}/../tests/collate
+icu4j.charset-tests.dir = ${shared.dir}/../tests/charset
+icu4j.localespi-tests.dir = ${shared.dir}/../tests/localespi
+icu4j.translit-tests.dir = ${shared.dir}/../tests/translit
+
+icu4j.build-tools.dir = ${shared.dir}/../../tools/build
+icu4j.tools.dir = ${shared.dir}/../../tools/misc
+
+icu4j.demos.dir = ${shared.dir}/../../demos
diff --git a/main/shared/data/Transliterator_Han_Latin_Definition.txt b/main/shared/data/Transliterator_Han_Latin_Definition.txt
new file mode 100644
index 0000000..f89f7b0
--- /dev/null
+++ b/main/shared/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/main/shared/data/Transliterator_Han_Latin_EDICT.txt b/main/shared/data/Transliterator_Han_Latin_EDICT.txt
new file mode 100644
index 0000000..38c0026
--- /dev/null
+++ b/main/shared/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/main/shared/data/icudata.jar b/main/shared/data/icudata.jar
new file mode 100755
index 0000000..083843d
--- /dev/null
+++ b/main/shared/data/icudata.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9d0750cfdc01d9d3c6fc8718ba263bb017406fd98c38ed8dd672949f8e6c643a
+size 6466881
diff --git a/main/shared/data/security.policy b/main/shared/data/security.policy
new file mode 100644
index 0000000..8b9014a
--- /dev/null
+++ b/main/shared/data/security.policy
@@ -0,0 +1,46 @@
+//#
+//#*******************************************************************************
+//#* 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
+{
+    // temporary for debugging
+    // permission java.lang.RuntimePermission "getProtectionDomain";
+
+    permission java.lang.RuntimePermission "accessDeclaredMembers";
+
+    // needed for Locale.setDefault, only used in tests and demos
+    permission java.util.PropertyPermission "user.language", "write";
+
+    // 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 core/charset tests jar)
+// can read test resource files (in core/charset tests 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";
+};
+
+grant codebase "file:${user.dir}/icu4jtests.jar"
+{
+    permission java.io.FilePermission "${/}${user.dir}${/}icu4j.jar", "read";
+};
\ No newline at end of file
diff --git a/main/shared/data/testdata.jar b/main/shared/data/testdata.jar
new file mode 100755
index 0000000..152e1e6
--- /dev/null
+++ b/main/shared/data/testdata.jar
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:19cbe9dc7cb7e87c559d5afd674094c76a19389a70b208301ef54d48b37fc8a7
+size 720100
diff --git a/main/shared/licenses/license.html b/main/shared/licenses/license.html
new file mode 100644
index 0000000..ba2871a
--- /dev/null
+++ b/main/shared/licenses/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/main/shared/licenses/unicode-license.txt b/main/shared/licenses/unicode-license.txt
new file mode 100644
index 0000000..cf5cfdb
--- /dev/null
+++ b/main/shared/licenses/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-2008 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
diff --git a/main/tests/charset/.classpath b/main/tests/charset/.classpath
new file mode 100644
index 0000000..fe85f03
--- /dev/null
+++ b/main/tests/charset/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry excluding="**/.svn/" kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-charset"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-core"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-test-framework"/>
+	<classpathentry kind="output" path="out/bin"/>
+</classpath>
diff --git a/main/tests/charset/.externalToolBuilders/copy-charset-test-data.launch b/main/tests/charset/.externalToolBuilders/copy-charset-test-data.launch
new file mode 100644
index 0000000..9bc1e73
--- /dev/null
+++ b/main/tests/charset/.externalToolBuilders/copy-charset-test-data.launch
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_AFTER_CLEAN_TARGETS" value="copy-charset-test-data,"/>
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_MANUAL_TARGETS" value="copy-charset-test-data,"/>
+<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-charset-tests/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-charset-tests"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.running" value="true"/>
+<mapEntry key="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-charset-tests/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"/>
+</launchConfiguration>
diff --git a/main/tests/charset/.project b/main/tests/charset/.project
new file mode 100644
index 0000000..87f0924
--- /dev/null
+++ b/main/tests/charset/.project
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>icu4j-charset-tests</name>
+	<comment></comment>
+	<projects>
+		<project>icu4j-charset</project>
+		<project>icu4j-core</project>
+		<project>icu4j-shared</project>
+		<project>icu4j-test-framework</project>
+	</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/copy-charset-test-data.launch</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/main/tests/charset/.settings/org.eclipse.jdt.core.prefs b/main/tests/charset/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..7d54ac4
--- /dev/null
+++ b/main/tests/charset/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,330 @@
+#Wed Jun 24 13:37:18 EDT 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+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.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=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=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+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=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+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=ignore
+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.redundantSuperinterface=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.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+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.unusedParameterIncludeDocCommentReference=enabled
+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.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
+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=120
+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_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not 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=120
+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/main/tests/charset/.settings/org.eclipse.jdt.ui.prefs b/main/tests/charset/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..2c11787
--- /dev/null
+++ b/main/tests/charset/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,10 @@
+#Wed Jun 17 11:10:04 EDT 2009
+eclipse.preferences.version=1
+formatter_profile=_ICU4J Standard
+formatter_settings_version=11
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+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/main/tests/charset/build.properties b/main/tests/charset/build.properties
new file mode 100644
index 0000000..3dc6ef5
--- /dev/null
+++ b/main/tests/charset/build.properties
@@ -0,0 +1,5 @@
+#*******************************************************************************
+#* Copyright (C) 2009, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+shared.dir = ../../shared
diff --git a/main/tests/charset/build.xml b/main/tests/charset/build.xml
new file mode 100644
index 0000000..af65eff
--- /dev/null
+++ b/main/tests/charset/build.xml
@@ -0,0 +1,38 @@
+<!--
+*******************************************************************************
+* Copyright (C) 2009, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+-->
+<project name="charset-tests" default="build" basedir=".">
+    <property file="build-local.properties"/>
+    <property file="build.properties"/>
+    <import file="${shared.dir}/build/common-targets.xml"/>
+
+    <path id="javac.classpathref">
+        <path refid="javac.classpathref.${ant.project.name}"/>
+    </path>
+    <property name="jar.file" value="${icu4j.charset-tests.jar}"/>
+
+    <target name="build" depends="compile, copy, jar" description="Build the project"/>
+
+    <target name="build-all" depends="@build-all" description="Build the project including all dependencies"/>
+
+    <target name="clean" depends="@clean" description="Clean up the build outputs"/>
+
+    <target name="compile" depends="@compile" description="Compile java source files"/>
+
+    <target name="copy" depends="@copy, copy-charset-test-data" description="Copy non-java runtime files to the project's binary directory"/>
+
+    <target name="jar" depends="compile, copy, @jar" description="Create the project's jar file"/>
+
+    <target name="copy-charset-test-data" description="Extract pre-built ICU charset test data files and copy them to the project's binary directory">
+        <unjar src="${icu4j.testdata.jar}" dest="${bin.dir}">
+            <patternset>
+                <include name="**/*.cnv"/>
+            	<include name="**/conversion.res"/>
+            </patternset>
+        </unjar>
+    </target>
+
+</project>
\ No newline at end of file
diff --git a/main/tests/charset/charset-tests-build.launch b/main/tests/charset/charset-tests-build.launch
new file mode 100644
index 0000000..78862f1
--- /dev/null
+++ b/main/tests/charset/charset-tests-build.launch
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j-charset-tests/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j-charset-tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.running" value="true"/>
+<mapEntry key="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-charset-tests/build.xml}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/main/tests/charset/manifest.stub b/main/tests/charset/manifest.stub
new file mode 100644
index 0000000..7ead6db
--- /dev/null
+++ b/main/tests/charset/manifest.stub
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+
+Name: com/ibm/icu/dev/test/charset
+Specification-Title: ICU for Java Charset Tests
+Specification-Version: @SPECVERSION@
+Specification-Vendor: ICU
+Implementation-Title: ICU for Java Charset Tests
+Implementation-Version: @IMPLVERSION@
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: @COPYRIGHT@
diff --git a/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestAll.java b/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestAll.java
new file mode 100644
index 0000000..1baa643
--- /dev/null
+++ b/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestAll.java
@@ -0,0 +1,34 @@
+/**
+*******************************************************************************
+* Copyright (C) 2009, 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",
+                  "TestSelection"
+              },
+              "All ICU Charset Tests"
+              );
+    }
+
+    public static final String CLASS_TARGET_NAME = "Charset";
+}
\ No newline at end of file
diff --git a/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestCharset.java b/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestCharset.java
new file mode 100644
index 0000000..c05ce9c
--- /dev/null
+++ b/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestCharset.java
@@ -0,0 +1,5595 @@
+/**
+*******************************************************************************
+* Copyright (C) 2006-2009, 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.");
+        }
+    }
+    
+    //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());
+                }
+                // Test overflow for code coverage reasons
+                if (i == 0) {
+                    ByteBuffer test = encoderResult;
+                    test.position(0);
+                    CharBuffer smallBuffer = CharBuffer.allocate(11);
+                    decode.reset();
+                    CoderResult status = decode.decode(test, smallBuffer, true);
+                    if (status != CoderResult.OVERFLOW) {
+                        errln("Overflow buffer error should have been thrown.");
+                    }
+                }
+            }catch(Exception e){
+                errln("Exception while converting SCSU thrown: " + e);
+            }
+        }
+        
+        /* Provide better code coverage */
+        /* testing illegal codepoints */
+        CoderResult illegalResult = CoderResult.UNDERFLOW;
+        CharBuffer illegalDecoderTrgt = CharBuffer.allocate(10);
+        
+        byte[] illegalDecoderSrc1 = { (byte)0x41, (byte)0xdf, (byte)0x0c };
+        decode.reset();
+        illegalResult = decode.decode(ByteBuffer.wrap(illegalDecoderSrc1), illegalDecoderTrgt, true);
+        if (illegalResult == CoderResult.OVERFLOW || illegalResult == CoderResult.UNDERFLOW) {
+            errln("Malformed error should have been returned for decoder " + charset.name());
+        }
+        /* code coverage test from nucnvtst.c in ICU4C */
+        CoderResult ccResult = CoderResult.UNDERFLOW;
+        int CCBufSize = 120 * 10;
+        ByteBuffer trgt = ByteBuffer.allocate(CCBufSize);
+        CharBuffer test = CharBuffer.allocate(CCBufSize);
+        String [] ccSrc = {
+            "\ud800\udc00", /* smallest surrogate*/
+            "\ud8ff\udcff",
+            "\udBff\udFff", /* largest surrogate pair*/
+            "\ud834\udc00",
+            //"\U0010FFFF",
+            "Hello \u9292 \u9192 World!",
+            "Hell\u0429o \u9292 \u9192 W\u00e4rld!",
+            "Hell\u0429o \u9292 \u9292W\u00e4rld!",
+
+            "\u0648\u06c8", /* catch missing reset*/
+            "\u0648\u06c8",
+
+            "\u4444\uE001", /* lowest quotable*/
+            "\u4444\uf2FF", /* highest quotable*/
+            "\u4444\uf188\u4444",
+            "\u4444\uf188\uf288",
+            "\u4444\uf188abc\u0429\uf288",
+            "\u9292\u2222",
+            "Hell\u0429\u04230o \u9292 \u9292W\u00e4\u0192rld!",
+            "Hell\u0429o \u9292 \u9292W\u00e4rld!",
+            "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*/
+
+            /* regression tests*/
+            "\u6441\ub413\ua733\uf8fe\ueedb\u587f\u195f\u4899\uf23d\u49fd\u0aac\u5792\ufc22\ufc3c\ufc46\u00aa",
+            /*"\u00df\u01df\uf000\udbff\udfff\u000d\n\u0041\u00df\u0401\u015f\u00df\u01df\uf000\udbff\udfff",*/
+            "\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",
+        };
+        for (int i = 0; i < ccSrc.length; i++) {
+            CharBuffer ubuf = CharBuffer.wrap(ccSrc[i]);
+            encode.reset();
+            decode.reset();
+            trgt.clear();
+            test.clear();
+            ccResult = encode.encode(ubuf, trgt, true);
+            if (ccResult.isError()) {
+                errln("Error while encoding " + charset.name() + " in test for code coverage[" + i + "].");
+            } else {
+                trgt.limit(trgt.position());
+                trgt.position(0);
+                ccResult = decode.decode(trgt, test, true);
+                if (ccResult.isError()) {
+                    errln("Error while decoding " + charset.name() + " in test for code coverage[" + i + "].");
+                } else {
+                    ubuf.position(0);
+                    test.limit(test.position());
+                    test.position(0);
+                    if (!equals(test, ubuf)) {
+                        errln("Roundtrip failed for " + charset.name() + " in test for code coverage[" + i + "].");
+                    }
+                }
+            }
+        }
+        
+        /* Monkey test */
+        {
+            char[] monkeyIn = {
+                    0x00A8, 0x3003, 0x3005, 0x2015, 0xFF5E, 0x2016, 0x2026, 0x2018, 0x000D, 0x000A,
+                    0x2019, 0x201C, 0x201D, 0x3014, 0x3015, 0x3008, 0x3009, 0x300A, 0x000D, 0x000A,
+                    0x300B, 0x300C, 0x300D, 0x300E, 0x300F, 0x3016, 0x3017, 0x3010, 0x000D, 0x000A,
+                    0x3011, 0x00B1, 0x00D7, 0x00F7, 0x2236, 0x2227, 0x7FC1, 0x8956, 0x000D, 0x000A,
+                    0x9D2C, 0x9D0E, 0x9EC4, 0x5CA1, 0x6C96, 0x837B, 0x5104, 0x5C4B, 0x000D, 0x000A,
+                    0x61B6, 0x81C6, 0x6876, 0x7261, 0x4E59, 0x4FFA, 0x5378, 0x57F7, 0x000D, 0x000A,
+                    0x57F4, 0x57F9, 0x57FA, 0x57FC, 0x5800, 0x5802, 0x5805, 0x5806, 0x000D, 0x000A,
+                    0x580A, 0x581E, 0x6BB5, 0x6BB7, 0x6BBA, 0x6BBC, 0x9CE2, 0x977C, 0x000D, 0x000A,
+                    0x6BBF, 0x6BC1, 0x6BC5, 0x6BC6, 0x6BCB, 0x6BCD, 0x6BCF, 0x6BD2, 0x000D, 0x000A,
+                    0x6BD3, 0x6BD4, 0x6BD6, 0x6BD7, 0x6BD8, 0x6BDB, 0x6BEB, 0x6BEC, 0x000D, 0x000A,
+                    0x6C05, 0x6C08, 0x6C0F, 0x6C11, 0x6C13, 0x6C23, 0x6C34, 0x0041, 0x000D, 0x000A,
+                    0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x000D, 0x000A,
+                    0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x000D, 0x000A,
+                    0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x000D, 0x000A,
+                    0x005B, 0x9792, 0x9CCC, 0x9CCD, 0x9CCE, 0x9CCF, 0x9CD0, 0x9CD3, 0x000D, 0x000A,
+                    0x9CD4, 0x9CD5, 0x9CD7, 0x9CD8, 0x9CD9, 0x9CDC, 0x9CDD, 0x9CDF, 0x000D, 0x000A,
+                    0x9785, 0x9791, 0x00BD, 0x0390, 0x0385, 0x0386, 0x0388, 0x0389, 0x000D, 0x000A,
+                    0x038E, 0x038F, 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x000D, 0x000A,
+                    0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x038A, 0x038C, 0x039C, 0x000D, 0x000A,
+                    /* test non-BMP code points */
+                    0xD869, 0xDE99, 0xD869, 0xDE9C, 0xD869, 0xDE9D, 0xD869, 0xDE9E, 0xD869, 0xDE9F,
+                    0xD869, 0xDEA0, 0xD869, 0xDEA5, 0xD869, 0xDEA6, 0xD869, 0xDEA7, 0xD869, 0xDEA8,
+                    0xD869, 0xDEAB, 0xD869, 0xDEAC, 0xD869, 0xDEAD, 0xD869, 0xDEAE, 0xD869, 0xDEAF,
+                    0xD869, 0xDEB0, 0xD869, 0xDEB1, 0xD869, 0xDEB3, 0xD869, 0xDEB5, 0xD869, 0xDEB6,
+                    0xD869, 0xDEB7, 0xD869, 0xDEB8, 0xD869, 0xDEB9, 0xD869, 0xDEBA, 0xD869, 0xDEBB,
+                    0xD869, 0xDEBC, 0xD869, 0xDEBD, 0xD869, 0xDEBE, 0xD869, 0xDEBF, 0xD869, 0xDEC0,
+                    0xD869, 0xDEC1, 0xD869, 0xDEC2, 0xD869, 0xDEC3, 0xD869, 0xDEC4, 0xD869, 0xDEC8,
+                    0xD869, 0xDECA, 0xD869, 0xDECB, 0xD869, 0xDECD, 0xD869, 0xDECE, 0xD869, 0xDECF,
+                    0xD869, 0xDED0, 0xD869, 0xDED1, 0xD869, 0xDED2, 0xD869, 0xDED3, 0xD869, 0xDED4,
+                    0xD869, 0xDED5, 0xD800, 0xDC00, 0xD800, 0xDC00, 0xD800, 0xDC00, 0xDBFF, 0xDFFF,
+                    0xDBFF, 0xDFFF, 0xDBFF, 0xDFFF,
+
+
+                    0x4DB3, 0x4DB4, 0x4DB5, 0x4E00, 0x4E00, 0x4E01, 0x4E02, 0x4E03, 0x000D, 0x000A,
+                    0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x33E0, 0x33E6, 0x000D, 0x000A,
+                    0x4E05, 0x4E07, 0x4E04, 0x4E08, 0x4E08, 0x4E09, 0x4E0A, 0x4E0B, 0x000D, 0x000A,
+                    0x4E0C, 0x0021, 0x0022, 0x0023, 0x0024, 0xFF40, 0xFF41, 0xFF42, 0x000D, 0x000A,
+                    0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0x000D, 0x000A,
+            };
+            encode.reset();
+            decode.reset();
+            CharBuffer monkeyCB = CharBuffer.wrap(monkeyIn);
+            try {
+                ByteBuffer monkeyBB = encode.encode(monkeyCB); 
+                /* CharBuffer monkeyEndResult =*/ decode.decode(monkeyBB);
+                
+            } catch (Exception ex) {
+                errln("Exception thrown while encoding/decoding monkey test in SCSU: " + ex);
+            }
+        }
+        // Test malformed
+        {
+            char[] malformedSequence = {
+                    0xD899, 0xDC7F, 0xDC88, 0xDC88, 0xD888, 0xDDF9
+            };
+            encode.reset();
+            CharBuffer malformedSrc = CharBuffer.wrap(malformedSequence);
+            
+            try {
+                encode.encode(malformedSrc);
+                errln("Malformed error should have thrown an exception.");
+            } catch (Exception ex) {
+            }
+        }
+        // Test overflow buffer
+        {
+            ByteBuffer overflowTest = ByteBuffer.wrap(allFeaturesSCSU);
+            int sizes[] = { 8, 2, 11 };
+            for (int i = 0; i < sizes.length; i++) {
+                try {
+                    decode.reset();
+                    overflowTest.position(0);
+                    smBufDecode(decode, "SCSU overflow test", overflowTest, CharBuffer.allocate(sizes[i]), true, false);
+                    errln("Buffer overflow exception should have been thrown.");
+                } catch (BufferOverflowException ex) {
+                } catch (Exception ex) {
+                    errln("Buffer overflow exception should have been thrown.");
+                }
+            }
+            
+        }
+    } 
+    
+    /* 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]);
+            }
+        }
+    }
+    
+    /* Increase code coverage for CharsetICU and CharsetProviderICU*/
+    public void TestCharsetICUCodeCoverage() {
+        CharsetProviderICU provider = new CharsetProviderICU();
+
+        if (provider.charsetForName("UTF16", null) != null) {
+            errln("charsetForName should have returned a null");
+        }
+
+        if (CharsetProviderICU.getJavaCanonicalName(null) != null) {
+            errln("getJavaCanonicalName should have returned a null when null is given to it.");
+        }
+
+        try {
+            Charset testCharset = CharsetICU.forNameICU("bogus");
+            errln("UnsupportedCharsetException should be thrown for charset \"bogus\" - but got charset " + testCharset.name());
+        } catch (UnsupportedCharsetException ex) {
+            logln("UnsupportedCharsetException was thrown for CharsetICU.forNameICU(\"bogus\")");
+        }
+
+        Charset charset = provider.charsetForName("UTF16");
+
+        try {
+            ((CharsetICU)charset).getUnicodeSet(null, 0);
+        } catch (IllegalArgumentException ex) {
+            return;
+        }
+        errln("IllegalArgumentException should have been thrown.");
+    }
+    
+    public void TestCharsetLMBCS() {
+        String []lmbcsNames = {
+                "LMBCS-1",
+                "LMBCS-2",
+                "LMBCS-3",
+                "LMBCS-4",
+                "LMBCS-5",
+                "LMBCS-6",
+                "LMBCS-8",
+                "LMBCS-11",
+                "LMBCS-16",
+                "LMBCS-17",
+                "LMBCS-18",
+                "LMBCS-19"
+        };
+        
+        char[] src = {
+                0x0192, 0x0041, 0x0061, 0x00D0, 0x00F6, 0x0100, 0x0174, 0x02E4, 0x03F5, 0x03FB,
+                0x05D3, 0x05D4, 0x05EA, 0x0684, 0x0685, 0x1801, 0x11B3, 0x11E8, 0x1F9A, 0x2EB4,
+                0x3157, 0x3336, 0x3304, 0xD881, 0xDC88
+        };
+        CharBuffer cbInput = CharBuffer.wrap(src);
+        
+        CharsetProviderICU provider = new CharsetProviderICU();
+        
+        for (int i = 0; i < lmbcsNames.length; i++) {
+            Charset charset = provider.charsetForName(lmbcsNames[i]);
+            if (charset == null) {
+                errln("Unable to create LMBCS charset: " + lmbcsNames[i]);
+                return;
+            }
+            CharsetEncoder encoder = charset.newEncoder();
+            CharsetDecoder decoder = charset.newDecoder();
+            
+            try {
+                cbInput.position(0);
+                ByteBuffer bbTmp = encoder.encode(cbInput);
+                CharBuffer cbOutput = decoder.decode(bbTmp);
+                
+                if (!equals(cbInput, cbOutput)) {
+                    errln("Roundtrip test failed for charset: " + lmbcsNames[i]);
+                }
+            } catch (Exception ex) {
+                if (i >= 8) {
+                    /* Expected exceptions */
+                    continue;
+                }
+                errln("Exception thrown: " + ex + " while using charset: " + lmbcsNames[i]);
+            }
+            
+        }
+        
+        // Test malformed
+        CoderResult malformedResult = CoderResult.UNDERFLOW;
+        byte[] malformedBytes = {
+                (byte)0x61, (byte)0x01, (byte)0x29, (byte)0x81, (byte)0xa0, (byte)0x0f
+        };
+        ByteBuffer malformedSrc = ByteBuffer.wrap(malformedBytes);
+        CharBuffer malformedTrgt = CharBuffer.allocate(10);
+        int[] malformedLimits = {
+                2, 6
+        };
+        CharsetDecoder malformedDecoderTest = provider.charsetForName("LMBCS-1").newDecoder();
+        for (int n = 0; n < malformedLimits.length; n++) {
+            malformedDecoderTest.reset();
+            
+            malformedSrc.position(0);
+            malformedSrc.limit(malformedLimits[n]);
+            
+            malformedTrgt.clear();
+            
+            malformedResult = malformedDecoderTest.decode(malformedSrc,malformedTrgt, true);
+            if (!malformedResult.isMalformed()) {
+                errln("Malformed error should have resulted.");
+            }
+        }
+    }
+    
+    /*
+     * This is a port of ICU4C TestAmbiguousConverter in cintltst.
+     * Since there is no concept of ambiguous converters in ICU4J
+     * this test is merely for code coverage reasons.
+     */
+    public void TestAmbiguousConverter() {
+        byte [] inBytes = {
+                0x61, 0x5b, 0x5c
+        };
+        ByteBuffer src = ByteBuffer.wrap(inBytes);
+        CharBuffer trgt = CharBuffer.allocate(20);
+        
+        CoderResult result = CoderResult.UNDERFLOW;
+        CharsetProviderICU provider = new CharsetProviderICU();
+        String[] names = CharsetProviderICU.getAllNames();
+        
+        for (int i = 0; i < names.length; i++) {
+            Charset charset = provider.charsetForName(names[i]);
+            if (charset == null) {
+                /* We don't care about any failures because not all converters are available. */
+                continue;
+            }
+            CharsetDecoder decoder = charset.newDecoder();
+            
+            src.position(0);
+            trgt.clear();
+            
+            result = decoder.decode(src, trgt, true);
+            if (result.isError()) {
+                /* We don't care about any failures. */
+                continue;
+            }
+        }
+    }
+}
diff --git a/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestConversion.java b/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestConversion.java
new file mode 100644
index 0000000..19011e4
--- /dev/null
+++ b/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestConversion.java
@@ -0,0 +1,1147 @@
+/*
+ *******************************************************************************
+ * 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) {
+            if (skipIfBeforeICU(4,3,2)) { // TIME BOMB
+                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 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,3,2)) {
+                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 {
+                cc.bytes.rewind();
+                out = decoder.decode(cc.bytes);
+                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;
+
+            }
+
+        }// 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();
+        
+     
+        cc.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(cc.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, cc.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();
+
+        // test to see if the conversion matches actual results
+        if (output.limit() != expected.length()) {
+            if (skipIfBeforeICU(4,3,2)) { // TIME BOMB
+                logln("Skipping test:(" + cc.charset + ") due to time bomb");
+            } else {
+                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)) {
+                    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 if (skipIfBeforeICU(4,3,2)) {
+            // TIME BOMB
+        } 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/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestSelection.java b/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestSelection.java
new file mode 100644
index 0000000..dd977a2
--- /dev/null
+++ b/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestSelection.java
@@ -0,0 +1,950 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and   *
+ * others. All Rights Reserved.                                               *
+ ******************************************************************************
+ */
+
+/**
+ * Test for CharsetSelector
+ * 
+ * This is a port of ucnvseltst.c from ICU4C
+ * 
+ * Tests related to serialization are not ported in this version. In addition,
+ * the TestConversionUTF8 method is not going to be ported, as UTF8 is seldom used
+ * in Java.
+ * 
+ * @author Shaopeng Jia
+ */
+
+package com.ibm.icu.dev.test.charset;
+
+import java.nio.charset.Charset;
+import java.util.List;
+import java.util.Vector;
+
+import com.ibm.icu.charset.CharsetICU;
+import com.ibm.icu.charset.CharsetProviderICU;
+import com.ibm.icu.charset.CharsetSelector;
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+public class TestSelection extends TestFmwk {
+    private Object[] availableCharsetNames;
+
+    private int findIndex(String charsetName) {
+        int index = -1;
+        Charset set1 = CharsetICU.forNameICU(charsetName);
+        for (int i = 0; i < availableCharsetNames.length; i++) {
+            Charset set2 = CharsetICU.forNameICU((String) availableCharsetNames[i]);
+            if (set1.compareTo(set2) == 0) {
+                index = i;
+                break;
+            }
+        }
+        if (index == -1) {
+            throw new IllegalArgumentException(
+                    "findIndex cannot find the charsetName passed in");
+        }
+        return index;
+    }
+
+    private void fillBool(List result, boolean[] toFill) {
+        for (int i = 0; i < result.size(); i++) {
+            String name = (String) result.get(i);
+            toFill[findIndex(name)] = true;
+        }
+    }
+
+    private void verifyResultUTF16(String s, Vector encodings, List result,
+            UnicodeSet excludedEncodings, int mappingTypes) {
+        boolean[] resultsFromSystem = new boolean[availableCharsetNames.length];
+        boolean[] resultsManually = new boolean[availableCharsetNames.length];
+        for (int i = 0; i < availableCharsetNames.length; i++) {
+            resultsFromSystem[i] = resultsManually[i] = false;
+        }
+
+        int numOfEncodings = encodings.size();
+        for (int i = 0; i < numOfEncodings; i++) {
+            resultsManually[findIndex((String) encodings.get(i))] = true;
+            UnicodeSet unicodePointSet = new UnicodeSet();
+            Charset testCharset = CharsetICU.forNameICU((String) encodings
+                    .get(i));
+            ((CharsetICU) testCharset).getUnicodeSet(unicodePointSet,
+                    mappingTypes);
+            int ch;
+            int index = 0;
+            while (index < s.length()) {
+                ch = UTF16.charAt(s, index);
+                if (!excludedEncodings.contains(ch)
+                        && !unicodePointSet.contains(ch)) {
+                    resultsManually[findIndex((String) encodings.get(i))] = false;
+                    break;
+                }
+                index += UTF16.getCharCount(ch);
+            }
+        }
+
+        // fill the bool for the selector results
+        fillBool(result, resultsFromSystem);
+        for (int i = 0; i < availableCharsetNames.length; i++) {
+            if (resultsManually[i] != resultsFromSystem[i]) {
+                errln("failure in charset selector! Charset "
+                        + (String) availableCharsetNames[i]
+                        + " had conflicting results manual: "
+                        + resultsManually[i] + ", system: "
+                        + resultsFromSystem[i] + "\n");
+            }
+        }
+    }
+
+    protected void init() {
+        availableCharsetNames = CharsetProviderICU.getAvailableNames();
+    }
+
+    public static void main(String[] args) throws Exception {
+        new TestSelection().run(args);
+    }
+
+    public void TestConversionUTF16() {
+        /*
+         * test cases are separated by a -1 each line is one test case including
+         * encodings to check for I'd like to generate this array randomly but
+         * not sure if this is an allowed practice in ICU
+         */
+        int encodingsTestCases[] = { 
+                90, 92, 93, 94, 95, 96,
+                -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+                -1, 1, 3, 7, 9, 11, 13, 12, 15, 19, 20, 22, 24, -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, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20,
+                22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52,
+                54, 56, -1, 1, 5, 9, 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, -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, 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, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 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, 91, 92, 93, 94, 95, 96, 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,
+                123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+                135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+                147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+                159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+                171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
+                183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+                195, 196, 197, 198, 199, 200, -1, 1, -1 };
+
+        UnicodeSet[] excludedSets = new UnicodeSet[3];
+        excludedSets[0] = new UnicodeSet();
+        for (int i = 1; i < 3; i++) {
+            excludedSets[i] = new UnicodeSet(i * 30, i * 30 + 500);
+        }
+        
+        for (int excludedSetId = 0; excludedSetId < 3; excludedSetId++) {
+            for (int testCaseIdx = 0, prev = 0; testCaseIdx < encodingsTestCases.length; testCaseIdx++) {
+                if (encodingsTestCases[testCaseIdx] != -1)
+                    continue;
+                Vector encodings = new Vector();
+                for (int i = prev; i < testCaseIdx; i++) {
+                    encodings.add(availableCharsetNames[encodingsTestCases[i]]);
+                }
+                CharsetSelector sel = new CharsetSelector(encodings,
+                        excludedSets[excludedSetId], CharsetICU.ROUNDTRIP_SET);
+
+                List result;
+                for (int i = 0; i < texts.length; i++) {
+                    result = sel.selectForString(texts[i]);
+                    verifyResultUTF16(texts[i], encodings, result,
+                            excludedSets[excludedSetId],
+                            CharsetICU.ROUNDTRIP_SET);
+                    
+                    // Return after running one test when we are not running exhaustive tests
+                    if (getInclusion() < 6) {
+                      return;    
+                    }
+                }
+                prev = testCaseIdx + 1;
+            }
+        }
+    }
+    
+    /* This test is to provide better code coverage for CharsetSelector */
+    public void TestCharsetSelectorCodeCoverage() {
+        Vector emptyList = new Vector();
+        UnicodeSet nonEmptySet = new UnicodeSet();
+
+        nonEmptySet.add(0x0001, 0x0FFF);
+
+        CharsetSelector sel = null;
+
+        sel = new CharsetSelector(emptyList, nonEmptySet, CharsetICU.ROUNDTRIP_SET);
+
+        /* Test bogus mappingType */
+        try {
+            sel = new CharsetSelector(null, null, -1);
+            errln("IllegalArgumentException should have been thrown by CharsetSelector when given a bogus mappingType, but got - " + sel.toString());
+        } catch (IllegalArgumentException e) {
+            logln("IllegalArgumentException was thrown by CharsetSelector with a bogus mappingType.");
+        }
+    }
+    
+    private String[] texts = {
+            "Cos\'\u00E8 Unicode?\n\nUnicode assegna un numero univoco a ogni carattere,\nindipendentemente dalla piattaforma," +
+            "\nindipendentemente dall\'applicazione,\nindipendentemente dalla lingua.\n\nI computer, in buona sostanza," +
+            " non sanno far altro che trattare numeri. Per immagazzinare in memoria lettere o altri segni \u00E8 necessario" +
+            " che a ogni carattere venga assegnato un numero. Esistono centinaia di sistemi di codifica, preesistenti a " +
+            "Unicode, e ognuno di questi abbina i numeri ai caratteri in modo differente. Nessuna di queste codifiche " +
+            "comprende un numero di caratteri sufficiente per tutte le circostanze. Per le sole lingue dell\'Unione " +
+            "Europea, ad esempio, \u00E8 necessario utilizzare parecchi sistemi di codifica distinti. Anche considerando " +
+            "una solo lingua, come l\'italiano, non esiste una codifica unica che comprenda tutte le lettere e tutti i " +
+            "segni di punteggiatura e simboli tecnici di uso comune.\n\nQuesti sistemi di codifica, inoltre, sono in " +
+            "contraddizione l\'uno con l\'altro. Succede che due codifiche utilizzino lo stesso numero per due caratteri " +
+            "diversi o che, viceversa, adottino numeri diversi per lo stesso carattere. Qualsiasi elaboratore, e a maggior " +
+            "ragione un server di rete, ha bisogno di utilizzare codifiche diverse. Il problema \u00E8 che, quando i dati " +
+            "passano da una codifica a un\'altra, o da una piattaforma a un\'altra, si corre il serio rischio di perdere " +
+            "informazioni.\nUnicode sta cambiando le cose!\n\nUnicode attribuisce un numero univoco a ogni carattere, " +
+            "indipendentemente dalla piattaforma, dall\'applicativo, dalla lingua. Lo standard Unicode \u00E8 stato " +
+            "adottato da leader di mercato del calibro di Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, " +
+            "Sybase, Unisys e molti altri. Unicode \u00E8 alla base di molti moderni standard, come XML, Java, ECMAScript " +
+            "(JavaScript), LDAP, CORBA 3.0, WML eccetera, e costituisce l\'implementazione ufficiale dello standard " +
+            "internazionale ISO/IEC 10646. Unicode \u00E8 supportato da molti sistemi operativi, da tutti i pi\u00F9 " +
+            "moderni web browser e da molti altri prodotti. L\'emergere dello standard Unicode, unito alla recente " +
+            "disponibilit\u00E0 di strumenti che lo supportano, \u00E8 fra i pi\u00F9 significativi sviluppi della " +
+            "tecnologia della globalizzazione del software.\n\nL\'adozione di Unicode sui siti web e nelle applicazioni " +
+            "client/server o multi-tiered, rispetto all\'utilizzo dei set di caratteri tradizionali, permette un " +
+            "significativo abbattimento dei costi di gestione. Unicode consente che un\'unica versione di un software " +
+            "o di un sito web siano fruibili con piattaforme, lingue e paesi diversi, evitando la necessit\u00E0 di " +
+            "reingenierizzare il prodotto per ogni situazione specifica. Permette, inoltre, il trasporto del testo " +
+            "fra sistemi diversi senza che abbia luogo alcuna corruzione dei dati.\n",
+            
+            "\u0427\u0442\u043E \u0442\u0430\u043A\u043E\u0435 Unicode? Unicode - \u044D\u0442\u043E" +
+            " \u0443\u043D\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0439 \u043A\u043E\u0434" +
+            " \u0434\u043B\u044F \u043B\u044E\u0431\u043E\u0433\u043E \u0441\u0438\u043C\u0432\u043E\u043B\u0430," +
+            " \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E \u043E\u0442 " +
+            "\u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u044B, \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E" +
+            " \u043E\u0442 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B, " +
+            "\u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E \u043E\u0442 \u044F\u0437\u044B\u043A\u0430. " +
+            "\u041F\u043E \u0441\u0432\u043E\u0435\u0439 \u043F\u0440\u0438\u0440\u043E\u0434\u0435" +
+            " \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u044B \u043C\u043E\u0433\u0443\u0442 " +
+            "\u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C \u043B\u0438\u0448\u044C \u0441" +
+            " \u0447\u0438\u0441\u043B\u0430\u043C\u0438. \u0418 \u0434\u043B\u044F " +
+            "\u0442\u043E\u0433\u043E, \u0447\u0442\u043E\u0431\u044B \u043E\u043D\u0438" +
+            " \u043C\u043E\u0433\u043B\u0438 \u0445\u0440\u0430\u043D\u0438\u0442\u044C " +
+            "\u0432 \u043F\u0430\u043C\u044F\u0442\u0438 \u0431\u0443\u043A\u0432\u044B " +
+            "\u0438\u043B\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B, " +
+            "\u043A\u0430\u0436\u0434\u043E\u043C\u0443 \u0442\u0430\u043A\u043E\u043C\u0443 " +
+            "\u0441\u0438\u043C\u0432\u043E\u043B\u0443 \u0434\u043E\u043B\u0436\u043D\u043E " +
+            "\u0431\u044B\u0442\u044C \u043F\u043E\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043E " +
+            "\u0432 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 " +
+            "\u0447\u0438\u0441\u043B\u043E. \u0414\u043E \u0442\u043E\u0433\u043E, " +
+            "\u043A\u0430\u043A \u043F\u043E\u044F\u0432\u0438\u043B\u0441\u044F Unicode, " +
+            "\u0432 \u043C\u0438\u0440\u0435 \u0438\u043C\u0435\u043B\u0438 " +
+            "\u0445\u043E\u0436\u0434\u0435\u043D\u0438\u0435 \u0441\u043E\u0442\u043D\u0438 " +
+            "\u0440\u0430\u0437\u043B\u0438\u0447\u043D\u044B\u0445 \u0441\u0445\u0435\u043C " +
+            "\u043F\u043E\u0434\u043E\u0431\u043D\u043E\u0433\u043E " +
+            "\u043A\u043E\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F " +
+            "\u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432. \u041D\u043E \u043D\u0438 " +
+            "\u043E\u0434\u043D\u0430 \u0438\u0437 \u044D\u0442\u0438\u0445 " +
+            "\u0441\u0445\u0435\u043C \u043D\u0435 \u0431\u044B\u043B\u0430 " +
+            "\u0441\u0442\u043E\u043B\u044C \u0443\u043D\u0438\u0432\u0435\u0440\u0441\u0430\u043B\u044C\u043D\u043E\u0439," +
+            " \u0447\u0442\u043E\u0431\u044B \u043E\u043F\u0438\u0441\u0430\u0442\u044C " +
+            "\u0432\u0441\u0435 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u044B\u0435 " +
+            "\u0441\u0438\u043C\u0432\u043E\u043B\u044B: \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, " +
+            "\u0442\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F " +
+            "\u043A\u043E\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F " +
+            "\u0431\u0443\u043A\u0432, \u0432\u0445\u043E\u0434\u044F\u0449\u0438\u0445 \u0432 " +
+            "\u0430\u043B\u0444\u0430\u0432\u0438\u0442\u044B \u044F\u0437\u044B\u043A\u043E\u0432 " +
+            "\u0415\u0432\u0440\u043E\u043F\u0435\u0439\u0441\u043A\u043E\u0433\u043E " +
+            "\u0421\u043E\u043E\u0431\u0449\u0435\u0441\u0442\u0432\u0430, " +
+            "\u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0431\u044B\u043B\u043E " +
+            "\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C " +
+            "\u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E " +
+            "\u0440\u0430\u0437\u043B\u0438\u0447\u043D\u044B\u0445 \u043A\u043E\u0434\u0438\u0440\u043E\u0432\u043E\u043A. " +
+            "\u041F\u043E \u0431\u043E\u043B\u044C\u0448\u043E\u043C\u0443 \u0441\u0447\u0451\u0442\u0443 " +
+            "\u0434\u0430\u0436\u0435 \u0438 \u0434\u043B\u044F \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E\u0433\u043E " +
+            "\u044F\u0437\u044B\u043A\u0430, \u0441\u043A\u0430\u0436\u0435\u043C, " +
+            "\u0430\u043D\u0433\u043B\u0438\u0439\u0441\u043A\u043E\u0433\u043E, \u043D\u0435 " +
+            "\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043E\u0432\u0430\u043B\u043E \u0435\u0434\u0438\u043D\u043E\u0439 " +
+            "\u0441\u0438\u0441\u0442\u0435\u043C\u044B \u043A\u043E\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F," +
+            " \u0432\u043A\u043B\u044E\u0447\u0430\u0432\u0448\u0435\u0439 \u0432 \u0441\u0435\u0431\u044F \u0432\u0441\u0435 " +
+            "\u043E\u0431\u044B\u0447\u043D\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0435 " +
+            "\u0431\u0443\u043A\u0432\u044B, \u0437\u043D\u0430\u043A\u0438 \u043F\u0443\u043D\u043A\u0442\u0443\u0430\u0446\u0438\u0438" +
+            " \u0438 \u0442\u0435\u0445\u043D\u0438\u0447\u0435\u0441\u043A\u0438\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B." +
+            " \u0411\u043E\u043B\u0435\u0435 \u0442\u043E\u0433\u043E, " +
+            "\u0432\u0441\u0435 \u044D\u0442\u0438 \u0441\u0445\u0435\u043C\u044B " +
+            "\u043A\u043E\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u0447\u0430\u0441\u0442\u043E" +
+            " \u0434\u0430\u0436\u0435 \u043D\u0435 \u0431\u044B\u043B\u0438" +
+            " \u0441\u043E\u0432\u043C\u0435\u0441\u0442\u0438\u043C\u044B \u0434\u0440\u0443\u0433 \u0441" +
+            " \u0434\u0440\u0443\u0433\u043E\u043C. \u041A \u043F\u0440\u0438\u043C\u0435\u0440\u0443," +
+            " \u0434\u0432\u0435 \u0440\u0430\u0437\u043D\u044B\u0435 \u043A\u043E\u0434\u0438\u0440\u043E\u0432\u043A\u0438 " +
+            "\u043C\u043E\u0433\u043B\u0438 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C " +
+            "\u043E\u0434\u0438\u043D \u0438 \u0442\u043E\u0442 \u0436\u0435 \u043A\u043E\u0434 \u0434\u043B\u044F " +
+            "\u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0434\u0432\u0443\u0445 " +
+            "\u0440\u0430\u0437\u043D\u044B\u0445 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432 \u0438\u043B\u0438 " +
+            "\u043F\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0442\u044C \u0440\u0430\u0437\u043D\u044B\u0435 " +
+            "\u043A\u043E\u0434\u044B \u043E\u0434\u043D\u043E\u0439 \u0438 \u0442\u043E\u0439 \u0436\u0435 " +
+            "\u0431\u0443\u043A\u0432\u0435. \u0412 \u044D\u0442\u043E\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 " +
+            "\u0434\u043B\u044F \u043B\u044E\u0431\u043E\u0433\u043E \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0430, " +
+            "\u0430 \u043E\u0441\u043E\u0431\u0435\u043D\u043D\u043E \u0441\u0435\u0440\u0432\u0435\u0440\u0430, " +
+            "\u043F\u0440\u0438\u0445\u043E\u0434\u0438\u043B\u043E\u0441\u044C " +
+            "\u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044C " +
+            "\u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0440\u0430\u0437\u043D\u044B\u0445 " +
+            "\u043A\u043E\u0434\u0438\u0440\u043E\u0432\u043E\u043A, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 " +
+            "\u043C\u043E\u0433\u043B\u0438 \u043F\u043E\u043D\u0430\u0434\u043E\u0431\u0438\u0442\u044C\u0441\u044F, " +
+            "\u043D\u043E \u0434\u0430\u0436\u0435 \u0438 \u0442\u043E\u0433\u0434\u0430 \u043F\u0440\u0438 " +
+            "\u043F\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0434\u0430\u043D\u043D\u044B\u0445 \u043D\u0430 " +
+            "\u0434\u0440\u0443\u0433\u0443\u044E \u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u0443 " +
+            "\u0438\u043B\u0438 \u043F\u0440\u0438 \u0438\u0445 " +
+            "\u043F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u043D\u0438\u0438 \u0432 " +
+            "\u0434\u0440\u0443\u0433\u0443\u044E \u043A\u043E\u0434\u0438\u0440\u043E\u0432\u043A\u0443 " +
+            "\u0432\u0441\u0435\u0433\u0434\u0430 \u043E\u0441\u0442\u0430\u0432\u0430\u043B\u0441\u044F " +
+            "\u0440\u0438\u0441\u043A, \u0447\u0442\u043E \u044D\u0442\u0438 \u0434\u0430\u043D\u043D\u044B\u0435 " +
+            "\u043E\u043A\u0430\u0436\u0443\u0442\u0441\u044F " +
+            "\u043F\u043E\u0432\u0440\u0435\u0436\u0434\u0451\u043D\u043D\u044B\u043C\u0438. " +
+            "Unicode \u0438\u0437\u043C\u0435\u043D\u044F\u0435\u0442 \u0442\u0430\u043A\u043E\u0435 " +
+            "\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0432\u0435\u0449\u0435\u0439! " +
+            "\u0421\u0438\u0441\u0442\u0435\u043C\u0430 Unicode \u043F\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442 " +
+            "\u0443\u043D\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0439 \u043A\u043E\u0434 \u043B\u044E\u0431\u043E\u043C\u0443 " +
+            "\u0441\u0438\u043C\u0432\u043E\u043B\u0443, \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E \u043E\u0442 " +
+            "\u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u044B, \u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E " +
+            "\u043E\u0442 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B, " +
+            "\u043D\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E \u043E\u0442 \u044F\u0437\u044B\u043A\u0430. " +
+            "Unicode \u0431\u044B\u043B \u043F\u0440\u0438\u043D\u044F\u0442 \u043A\u0430\u043A " +
+            "\u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442 \u0442\u0430\u043A\u0438\u043C\u0438 " +
+            "\u043B\u0438\u0434\u0435\u0440\u0430\u043C\u0438 \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u043D\u043E\u0439" +
+            " \u0438\u043D\u0434\u0443\u0441\u0442\u0440\u0438\u0438, \u043A\u0430\u043A " +
+            "Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys \u0434\u0430 \u0438 " +
+            "\u043C\u043D\u043E\u0433\u0438\u043C\u0438 \u0434\u0440\u0443\u0433\u0438\u043C\u0438. " +
+            "\u0418\u043C\u0435\u043D\u043D\u043E \u044D\u0442\u0430 \u0441\u0445\u0435\u043C\u0430 " +
+            "\u043A\u043E\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F " +
+            "\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0442\u0430\u043A\u0438\u043C\u0438 " +
+            "\u0441\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u043C\u0438 " +
+            "\u0442\u0435\u0445\u043D\u043E\u043B\u043E\u0433\u0438\u044F\u043C\u0438 \u0438 " +
+            "\u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u0430\u043C\u0438, " +
+            "\u043A\u0430\u043A \u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, " +
+            "WML \u0438 \u0442\u0430\u043A \u0434\u0430\u043B\u0435\u0435. \u0418\u043C\u0435\u043D\u043D\u043E Unicode " +
+            "\u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u043E\u0444\u0438\u0446\u0438\u0430\u043B\u044C\u043D\u043E\u0439 " +
+            "\u0441\u0445\u0435\u043C\u043E\u0439 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438 ISO/IEC 10646. " +
+            "\u041D\u0430\u043A\u043E\u043D\u0435\u0446, \u044D\u0442\u0430 \u043A\u043E\u0434\u0438\u0440\u043E\u0432\u043A\u0430 " +
+            "\u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u0432\u043E " +
+            "\u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u0435 " +
+            "\u043E\u043F\u0435\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0445 \u0441\u0438\u0441\u0442\u0435\u043C, " +
+            "\u0432\u043E \u0432\u0441\u0435\u0445 \u0441\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0445 " +
+            "\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445 \u0418\u043D\u0442\u0435\u0440\u043D\u0435\u0442 " +
+            "\u0438 \u0432 \u0431\u043E\u043B\u044C\u0448\u043E\u043C \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0435 " +
+            "\u0434\u0440\u0443\u0433\u0438\u0445 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C. " +
+            "\u041F\u043E\u0432\u0441\u0435\u043C\u0435\u0441\u0442\u043D\u043E\u0435 " +
+            "\u0440\u0430\u0441\u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0435\u043D\u0438\u0435 " +
+            "\u0441\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u0430 Unicode \u0440\u043E\u0432\u043D\u043E " +
+            "\u043A\u0430\u043A \u0438 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0441\u0442\u044C " +
+            "\u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044E\u0449\u0438\u0445 \u0435\u0433\u043E " +
+            "\u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0432 \u043D\u0430\u0441\u0442\u043E\u044F\u0449\u0435\u0435 " +
+            "\u0432\u0440\u0435\u043C\u044F \u044F\u0432\u043B\u044F\u044E\u0442\u0441\u044F " +
+            "\u043E\u0434\u043D\u0438\u043C\u0438 \u0438\u0437 \u043D\u0430\u0438\u0431\u043E\u043B\u0435\u0435 " +
+            "\u0432\u0430\u0436\u043D\u044B\u0445 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0439 " +
+            "\u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044F \u0438\u043D\u0434\u0443\u0441\u0442\u0440\u0438\u0438 " +
+            "\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u043E\u0433\u043E " +
+            "\u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0435\u043D\u0438\u044F. " +
+            "\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435 Unicode \u0432 " +
+            "\u043C\u043D\u043E\u0433\u043E\u0443\u0440\u043E\u0432\u043D\u0435\u0432\u044B\u0445 " +
+            "\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F\u0445 \u0438\u043B\u0438 " +
+            "\u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0445 " +
+            "\u043A\u043E\u043C\u043F\u043B\u0435\u043A\u0441\u0430\u0445, " +
+            "\u043F\u043E\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u044B\u0445 \u0432 \u0440\u0430\u043C\u043A\u0430\u0445 " +
+            "\u0430\u0440\u0445\u0438\u0442\u0435\u043A\u0442\u0443\u0440\u044B " +
+            "\u043A\u043B\u0438\u0435\u043D\u0442-\u0441\u0435\u0440\u0432\u0435\u0440, \u0430 " +
+            "\u0442\u0430\u043A\u0436\u0435 \u043F\u0440\u0438 " +
+            "\u043F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u0438\u0438 " +
+            "\u0434\u0430\u043D\u043D\u044B\u0445 \u0432 \u0441\u0435\u0442\u0438 \u0418\u043D\u0442\u0435\u0440\u043D\u0435\u0442, " +
+            "\u043F\u0440\u0438\u0432\u043E\u0434\u0438\u0442 \u043A " +
+            "\u0437\u043D\u0430\u0447\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u043C\u0443 " +
+            "\u0441\u043D\u0438\u0436\u0435\u043D\u0438\u044E \u0440\u0430\u0441\u0445\u043E\u0434\u043E\u0432 " +
+            "\u043D\u0430 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0443 \u044D\u0442\u0438\u0445 " +
+            "\u043F\u0440\u043E\u0434\u0443\u043A\u0442\u043E\u0432 \u0438\u043B\u0438 " +
+            "\u0441\u0435\u0440\u0432\u0438\u0441\u043E\u0432 \u043F\u043E \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u044E " +
+            "\u0441\u043E \u0441\u043B\u0443\u0447\u0430\u0435\u043C " +
+            "\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0441\u0442\u0430\u0440\u044B\u0445 " +
+            "\u0441\u0445\u0435\u043C \u043A\u043E\u0434\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F. " +
+            "\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u043E, Unicode " +
+            "\u043F\u043E\u0437\u0432\u043E\u043B\u044F\u0435\u0442 \u0441\u043E\u0437\u0434\u0430\u0432\u0430\u0442\u044C " +
+            "\u0435\u0434\u0438\u043D\u044B\u0439 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0439 " +
+            "\u043F\u0440\u043E\u0434\u0443\u043A\u0442 \u0438\u043B\u0438 \u0441\u0430\u0439\u0442 " +
+            "\u0418\u043D\u0442\u0435\u0440\u043D\u0435\u0442 \u0434\u043B\u044F \u043C\u043D\u043E\u0436\u0435\u0441\u0442\u0432\u0430 " +
+            "\u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C, \u044F\u0437\u044B\u043A\u043E\u0432 \u0438 " +
+            "\u0441\u0442\u0440\u0430\u043D \u0431\u0435\u0437 \u043A\u0430\u043A\u0438\u0445-\u043B\u0438\u0431\u043E " +
+            "\u043F\u0435\u0440\u0435\u0434\u0435\u043B\u043E\u043A. \u0410 \u0435\u0433\u043E " +
+            "\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435 \u043F\u0440\u0438 " +
+            "\u043F\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0434\u0430\u043D\u043D\u044B\u0445 \u043C\u0435\u0436\u0434\u0443 " +
+            "\u0440\u0430\u0437\u043B\u0438\u0447\u043D\u044B\u043C\u0438 \u0441\u0438\u0441\u0442\u0435\u043C\u0430\u043C\u0438 " +
+            "\u043F\u0440\u0435\u0434\u043E\u0445\u0440\u0430\u043D\u044F\u0435\u0442 \u044D\u0442\u0438 " +
+            "\u0434\u0430\u043D\u043D\u044B\u0435 \u043E\u0442 \u043F\u043E\u0432\u0440\u0435\u0436\u0434\u0435",
+            
+            "\u0645\u0627 \u0647\u064A \u0627\u0644\u0634\u0641\u0631\u0629 \u0627\u0644\u0645\u0648\u062D\u062F\u0629 " +
+            "\"\u064A\u0648\u0646\u0650\u0643\u0648\u062F\" \u061F\n\n\u0623\u0633\u0627\u0633\u064B\u0627\u060C " +
+            "\u062A\u062A\u0639\u0627\u0645\u0644 \u0627\u0644\u062D\u0648\u0627\u0633\u064A\u0628 \u0641\u0642\u0637 \u0645\u0639 " +
+            "\u0627\u0644\u0623\u0631\u0642\u0627\u0645\u060C \u0648\u062A\u0642\u0648\u0645 \u0628\u062A\u062E\u0632\u064A\u0646 " +
+            "\u0627\u0644\u0623\u062D\u0631\u0641 \u0648\u0627\u0644\u0645\u062D\u0627\u0631\u0641 \u0627\u0644\u0623\u062E\u0631\u0649 " +
+            "\u0628\u0639\u062F \u0623\u0646 \u062A\u064F\u0639\u0637\u064A \u0631\u0642\u0645\u0627 \u0645\u0639\u064A\u0646\u0627 " +
+            "\u0644\u0643\u0644 \u0648\u0627\u062D\u062F \u0645\u0646\u0647\u0627. \u0648\u0642\u0628\u0644 " +
+            "\u0627\u062E\u062A\u0631\u0627\u0639 \"\u064A\u0648\u0646\u0650\u0643\u0648\u062F\"\u060C \u0643\u0627\u0646 " +
+            "\u0647\u0646\u0627\u0643 \u0645\u0626\u0627\u062A \u0627\u0644\u0623\u0646\u0638\u0645\u0629 " +
+            "\u0644\u0644\u062A\u0634\u0641\u064A\u0631 \u0648\u062A\u062E\u0635\u064A\u0635 \u0647\u0630\u0647 " +
+            "\u0627\u0644\u0623\u0631\u0642\u0627\u0645 \u0644\u0644\u0645\u062D\u0627\u0631\u0641\u060C \u0648\u0644\u0645 " +
+            "\u064A\u0648\u062C\u062F \u0646\u0638\u0627\u0645 \u062A\u0634\u0641\u064A\u0631 \u0648\u0627\u062D\u062F " +
+            "\u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u062C\u0645\u064A\u0639 \u0627\u0644\u0645\u062D\u0627\u0631\u0641 " +
+            "\u0627\u0644\u0636\u0631\u0648\u0631\u064A\u0629. \u0648\u0639\u0644\u0649 \u0633\u0628\u064A\u0644 " +
+            "\u0627\u0644\u0645\u062B\u0627\u0644\u060C \u0641\u0625\u0646 \u0627\u0644\u0627\u062A\u062D\u0627\u062F " +
+            "\u0627\u0644\u0623\u0648\u0631\u0648\u0628\u064A \u0644\u0648\u062D\u062F\u0647\u060C \u0627\u062D\u062A\u0648\u0649 " +
+            "\u0627\u0644\u0639\u062F\u064A\u062F \u0645\u0646 \u0627\u0644\u0634\u0641\u0631\u0627\u062A " +
+            "\u0627\u0644\u0645\u062E\u062A\u0644\u0641\u0629 \u0644\u064A\u063A\u0637\u064A \u062C\u0645\u064A\u0639 " +
+            "\u0627\u0644\u0644\u063A\u0627\u062A \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645\u0629 \u0641\u064A " +
+            "\u0627\u0644\u0627\u062A\u062D\u0627\u062F. \u0648\u062D\u062A\u0649 \u0644\u0648 " +
+            "\u0627\u0639\u062A\u0628\u0631\u0646\u0627 \u0644\u063A\u0629 \u0648\u0627\u062D\u062F\u0629\u060C " +
+            "\u0643\u0627\u0644\u0644\u063A\u0629 \u0627\u0644\u0625\u0646\u062C\u0644\u064A\u0632\u064A\u0629\u060C " +
+            "\u0641\u0625\u0646 \u062C\u062F\u0648\u0644 \u0634\u0641\u0631\u0629 \u0648\u0627\u062D\u062F \u0644\u0645 " +
+            "\u064A\u0643\u0641 \u0644\u0627\u0633\u062A\u064A\u0639\u0627\u0628 \u062C\u0645\u064A\u0639 " +
+            "\u0627\u0644\u0623\u062D\u0631\u0641 \u0648\u0639\u0644\u0627\u0645\u0627\u062A " +
+            "\u0627\u0644\u062A\u0631\u0642\u064A\u0645 \u0648\u0627\u0644\u0631\u0645\u0648\u0632 " +
+            "\u0627\u0644\u0641\u0646\u064A\u0629 \u0648\u0627\u0644\u0639\u0644\u0645\u064A\u0629 " +
+            "\u0627\u0644\u0634\u0627\u0626\u0639\u0629 \u0627\u0644\u0627\u0633\u062A\u0639\u0645\u0627\u0644.\n\n" +
+            " \n\n\u0648\u062A\u062C\u062F\u0631 \u0627\u0644\u0645\u0644\u0627\u062D\u0638\u0629 \u0623\u0646 " +
+            "\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u062A\u0634\u0641\u064A\u0631 " +
+            "\u0627\u0644\u0645\u062E\u062A\u0644\u0641\u0629 \u062A\u062A\u0639\u0627\u0631\u0636 \u0645\u0639 " +
+            "\u0628\u0639\u0636\u0647\u0627 \u0627\u0644\u0628\u0639\u0636. \u0648\u0628\u0639\u0628\u0627\u0631\u0629 " +
+            "\u0623\u062E\u0631\u0649\u060C \u064A\u0645\u0643\u0646 \u0623\u0646 \u064A\u0633\u062A\u062E\u062F\u0650\u0645 " +
+            "\u062C\u062F\u0648\u0644\u064A \u0634\u0641\u0631\u0629 \u0646\u0641\u0633 \u0627\u0644\u0631\u0642\u0645 " +
+            "\u0644\u062A\u0645\u062B\u064A\u0644 \u0645\u062D\u0631\u0641\u064A\u0646 " +
+            "\u0645\u062E\u062A\u0644\u0641\u064A\u0646\u060C \u0623\u0648 \u0631\u0642\u0645\u064A\u0646 " +
+            "\u0645\u062E\u062A\u0644\u0641\u064A\u0646 \u0644\u062A\u0645\u062B\u064A\u0644 \u0646\u0641\u0633 " +
+            "\u0627\u0644\u0645\u062D\u0631\u0641. \u0648\u0644\u0648 \u0623\u062E\u0630\u0646\u0627 \u0623\u064A " +
+            "\u062C\u0647\u0627\u0632 \u062D\u0627\u0633\u0648\u0628\u060C \u0648\u0628\u062E\u0627\u0635\u0629 " +
+            "\u062C\u0647\u0627\u0632 \u0627\u0644\u0646\u0627\u062F\u0644 (server)\u060C \u0641\u064A\u062C\u0628 " +
+            "\u0623\u0646 \u062A\u0643\u0648\u0646 \u0644\u062F\u064A\u0647 \u0627\u0644\u0642\u062F\u0631\u0629 " +
+            "\u0639\u0644\u0649 \u0627\u0644\u062A\u0639\u0627\u0645\u0644 \u0645\u0639 \u0639\u062F\u062F " +
+            "\u0643\u0628\u064A\u0631 \u0645\u0646 \u0627\u0644\u0634\u0641\u0631\u0627\u062A " +
+            "\u0627\u0644\u0645\u062E\u062A\u0644\u0641\u0629\u060C \u0648\u064A\u062A\u0645 " +
+            "\u062A\u0635\u0645\u064A\u0645\u0647 \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u0623\u0633\u0627\u0633. " +
+            "\u0648\u0645\u0639 \u0630\u0644\u0643\u060C \u0641\u0639\u0646\u062F\u0645\u0627 \u062A\u0645\u0631 " +
+            "\u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0639\u0628\u0631 \u0623\u0646\u0638\u0645\u0629 " +
+            "\u0645\u062E\u062A\u0644\u0641\u0629\u060C \u062A\u0648\u062C\u062F \u0647\u0646\u0627\u0643 " +
+            "\u062E\u0637\u0648\u0631\u0629 \u0644\u0636\u064A\u0627\u0639 \u0623\u0648 \u062A\u062D\u0631\u064A\u0641 " +
+            "\u0628\u0639\u0636 \u0647\u0630\u0647 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A.\n\n " +
+            "\n\n\"\u064A\u0648\u0646\u0650\u0643\u0648\u062F\" \u062A\u063A\u064A\u0631 \u0647\u0630\u0627 " +
+            "\u0643\u0644\u064A\u0640\u0627 !\n\n\u062A\u062E\u0635\u0635 \u0627\u0644\u0634\u0641\u0631\u0629 " +
+            "\u0627\u0644\u0645\u0648\u062D\u062F\u0629 \"\u064A\u0648\u0646\u0650\u0643\u0648\u062F\" " +
+            "\u0631\u0642\u0645\u0627 \u0648\u062D\u064A\u062F\u0627 \u0644\u0643\u0644 \u0645\u062D\u0631\u0641 " +
+            "\u0641\u064A \u062C\u0645\u064A\u0639 \u0627\u0644\u0644\u063A\u0627\u062A " +
+            "\u0627\u0644\u0639\u0627\u0644\u0645\u064A\u0629\u060C \u0648\u0630\u0644\u0643 \u0628\u063A\u0636 " +
+            "\u0627\u0644\u0646\u0638\u0631 \u0639\u0646 \u0646\u0648\u0639 \u0627\u0644\u062D\u0627\u0633\u0648\u0628 " +
+            "\u0623\u0648 \u0627\u0644\u0628\u0631\u0627\u0645\u062C \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645\u0629. " +
+            "\u0648\u0642\u062F \u062A\u0640\u0645 \u062A\u0628\u0646\u064A \u0645\u0648\u0627\u0635\u0641\u0629 " +
+            "\"\u064A\u0648\u0646\u0650\u0643\u0648\u062F\" \u0645\u0640\u0640\u0646 \u0642\u0628\u0640\u0644 " +
+            "\u0642\u0627\u062F\u0629 \u0627\u0644\u0635\u0627\u0646\u0639\u064A\u0646 \u0644\u0623\u0646\u0638\u0645\u0629 " +
+            "\u0627\u0644\u062D\u0648\u0627\u0633\u064A\u0628 \u0641\u0640\u064A \u0627\u0644\u0639\u0627\u0644\u0645\u060C " +
+            "\u0645\u062B\u0644 \u0634\u0631\u0643\u0627\u062A \u0622\u064A.\u0628\u064A.\u0625\u0645. " +
+            "(IBM)\u060C \u0623\u0628\u0640\u0644 (APPLE)\u060C \u0647\u0650\u064A\u0640\u0652\u0648\u0644\u0650\u0640\u062A " +
+            "\u0628\u0640\u0627\u0643\u0640\u0631\u062F (Hewlett-Packard) \u060C " +
+            "\u0645\u0627\u064A\u0643\u0631\u0648\u0633\u0648\u0641\u062A (Microsoft)\u060C " +
+            "\u0623\u0648\u0631\u0627\u0643\u0650\u0640\u0644 (Oracle) \u060C \u0635\u0646 (Sun) " +
+            "\u0648\u063A\u064A\u0631\u0647\u0627. \u0643\u0645\u0627 " +
+            "\u0623\u0646 \u0627\u0644\u0645\u0648\u0627\u0635\u0641\u0627\u062A " +
+            "\u0648\u0627\u0644\u0645\u0642\u0627\u064A\u064A\u0633 \u0627\u0644\u062D\u062F\u064A\u062B\u0629 " +
+            "(\u0645\u062B\u0644 \u0644\u063A\u0629 \u0627\u0644\u0628\u0631\u0645\u062C\u0629 \"\u062C\u0627\u0641\u0627\" " +
+            "\"JAVA\" \u0648\u0644\u063A\u0629 \"\u0625\u0643\u0633 \u0625\u0645 \u0625\u0644\" \"XML\" \u0627\u0644\u062A\u064A " +
+            "\u062A\u0633\u062A\u062E\u062F\u0645 \u0644\u0628\u0631\u0645\u062C\u0629 " +
+            "\u0627\u0644\u0627\u0646\u062A\u0631\u0646\u064A\u062A) \u062A\u062A\u0637\u0644\u0628 " +
+            "\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \"\u064A\u0648\u0646\u0650\u0643\u0648\u062F\". " +
+            "\u0639\u0644\u0627\u0648\u0629 \u0639\u0644\u0649 \u0630\u0644\u0643 \u060C \u0641\u0625\u0646 " +
+            "\"\u064A\u0648\u0646\u0650\u0643\u0648\u062F\" \u0647\u064A \u0627\u0644\u0637\u0640\u0631\u064A\u0640\u0642\u0640\u0629 " +
+            "\u0627\u0644\u0631\u0633\u0640\u0645\u064A\u0629 \u0644\u062A\u0637\u0628\u064A\u0642 " +
+            "\u0627\u0644\u0645\u0642\u064A\u0640\u0627\u0633 \u0627\u0644\u0640\u0639\u0640\u0627\u0644\u0640\u0645\u064A " +
+            "\u0625\u064A\u0632\u0648 \u0661\u0660\u0666\u0664\u0666  (ISO 10646) .\n\n \n\n\u0625\u0646 \u0628\u0632\u0648\u063A " +
+            "\u0645\u0648\u0627\u0635\u0641\u0629 \"\u064A\u0648\u0646\u0650\u0643\u0648\u062F\" " +
+            "\u0648\u062A\u0648\u0641\u0651\u064F\u0631 \u0627\u0644\u0623\u0646\u0638\u0645\u0629 \u0627\u0644\u062A\u064A " +
+            "\u062A\u0633\u062A\u062E\u062F\u0645\u0647 \u0648\u062A\u062F\u0639\u0645\u0647\u060C \u064A\u0639\u062A\u0628\u0631 " +
+            "\u0645\u0646 \u0623\u0647\u0645 \u0627\u0644\u0627\u062E\u062A\u0631\u0627\u0639\u0627\u062A " +
+            "\u0627\u0644\u062D\u062F\u064A\u062B\u0629 \u0641\u064A \u0639\u0648\u0644\u0645\u0629 " +
+            "\u0627\u0644\u0628\u0631\u0645\u062C\u064A\u0627\u062A \u0644\u062C\u0645\u064A\u0639 " +
+            "\u0627\u0644\u0644\u063A\u0627\u062A \u0641\u064A \u0627\u0644\u0639\u0627\u0644\u0645. " +
+            "\u0648\u0625\u0646 \u0627\u0633\u062A\u062E\u062F\u0627\u0645 \"\u064A\u0648\u0646\u0650\u0643\u0648\u062F\" " +
+            "\u0641\u064A \u0639\u0627\u0644\u0645 \u0627\u0644\u0627\u0646\u062A\u0631\u0646\u064A\u062A " +
+            "\u0633\u064A\u0624\u062F\u064A \u0625\u0644\u0649 \u062A\u0648\u0641\u064A\u0631 \u0643\u0628\u064A\u0631 " +
+            "\u0645\u0642\u0627\u0631\u0646\u0629 \u0645\u0639 \u0627\u0633\u062A\u062E\u062F\u0627\u0645 " +
+            "\u0627\u0644\u0645\u062C\u0645\u0648\u0639\u0627\u062A \u0627\u0644\u062A\u0642\u0644\u064A\u062F\u064A\u0629 " +
+            "\u0644\u0644\u0645\u062D\u0627\u0631\u0641 \u0627\u0644\u0645\u0634\u0641\u0631\u0629. \u0643\u0645\u0627 " +
+            "\u0623\u0646 \u0627\u0633\u062A\u062E\u062F\u0627\u0645 \"\u064A\u0648\u0646\u0650\u0643\u0648\u062F\" " +
+            "\u0633\u064A\u064F\u0645\u0643\u0651\u0650\u0646 \u0627\u0644\u0645\u0628\u0631\u0645\u062C \u0645\u0646 " +
+            "\u0643\u062A\u0627\u0628\u0629 \u0627\u0644\u0628\u0631\u0646\u0627\u0645\u062C \u0645\u0631\u0629 " +
+            "\u0648\u0627\u062D\u062F\u0629\u060C \u0648\u0627\u0633\u062A\u062E\u062F\u0627\u0645\u0647 \u0639\u0644\u0649 " +
+            "\u0623\u064A \u0646\u0648\u0639 \u0645\u0646 \u0627\u0644\u0623\u062C\u0647\u0632\u0629",
+              
+            "\u4EC0\u9EBD\u662FUnicode(\u7D71\u4E00\u78BC/\u6A19\u6E96\u842C\u570B\u78BC)?\n\n" +
+            "Unicode\u7D66\u6BCF\u500B\u5B57\u5143\u63D0\u4F9B\u4E86\u4E00\u500B\u552F\u4E00\u7684\u6578\u4F4D\uFF0C\n" +
+            "\u4E0D\u8AD6\u662F\u4EC0\u9EBD\u5E73\u81FA\uFF0C\n\u4E0D\u8AD6\u662F\u4EC0\u9EBD\u7A0B\u5F0F\uFF0C\n" +
+            "\u4E0D\u8AD6\u662F\u4EC0\u9EBD\u8A9E\u8A00\u3002\n\n" +
+            "\u57FA\u672C\u4E0A\uFF0C\u96FB\u8166\u53EA\u662F\u8655\u7406\u6578\u4F4D\u3002\u5B83\u5011\u6307\u5B9A" +
+            "\u4E00\u500B\u6578\u4F4D\uFF0C\u4F86\u5132\u5B58\u5B57\u6BCD\u6216\u5176\u4ED6\u5B57\u5143\u3002\u5728\u5275\u9020" +
+            "Unicode\u4E4B\u524D\uFF0C\u6709\u6578\u767E\u7A2E\u6307\u5B9A\u9019\u4E9B\u6578\u4F4D\u7684\u7DE8\u78BC" +
+            "\u7CFB\u7D71\u3002\u6C92\u6709\u4E00\u500B\u7DE8\u78BC\u53EF\u4EE5\u5305\u542B\u8DB3\u5920\u7684\u5B57" +
+            "\u5143\uFF1A\u4F8B\u5982\uFF0C\u55AE\u55AE\u6B50\u5DDE\u5171\u540C\u9AD4\u5C31\u9700\u8981\u597D\u5E7E" +
+            "\u7A2E\u4E0D\u540C\u7684\u7DE8\u78BC\u4F86\u5305\u62EC\u6240\u6709\u7684\u8A9E\u8A00\u3002\u5373\u4F7F" +
+            "\u662F\u55AE\u4E00\u7A2E\u8A9E\u8A00\uFF0C\u4F8B\u5982\u82F1\u8A9E\uFF0C\u4E5F\u6C92\u6709\u54EA\u4E00" +
+            "\u500B\u7DE8\u78BC\u53EF\u4EE5\u9069\u7528\u65BC\u6240\u6709\u7684\u5B57\u6BCD\uFF0C\u6A19\u9EDE\u7B26" +
+            "\u865F\uFF0C\u548C\u5E38\u7528\u7684\u6280\u8853\u7B26\u865F\u3002\n\n\u9019\u4E9B\u7DE8\u78BC\u7CFB" +
+            "\u7D71\u4E5F\u6703\u4E92\u76F8\u885D\u7A81\u3002\u4E5F\u5C31\u662F\u8AAA\uFF0C\u5169\u7A2E\u7DE8\u78BC" +
+            "\u53EF\u80FD\u4F7F\u7528\u76F8\u540C\u7684\u6578\u4F4D\u4EE3\u8868\u5169\u500B\u4E0D\u540C\u7684\u5B57" +
+            "\u5143\uFF0C\u6216\u4F7F\u7528\u4E0D\u540C\u7684\u6578\u4F4D\u4EE3\u8868\u76F8\u540C\u7684\u5B57\u5143" +
+            "\u3002\u4EFB\u4F55\u4E00\u53F0\u7279\u5B9A\u7684\u96FB\u8166 (\u7279\u5225\u662F\u4F3A\u670D\u5668\u90FD" +
+            "\u9700\u8981\u652F\u63F4\u8A31\u591A\u4E0D\u540C\u7684\u7DE8\u78BC\uFF0C\u4F46\u662F\uFF0C\u4E0D\u8AD6" +
+            "\u4EC0\u9EBD\u6642\u5019\u8CC7\u6599\u901A\u904E\u4E0D\u540C\u7684\u7DE8\u78BC\u6216\u5E73\u81FA\u4E4B" +
+            "\u9593\uFF0C\u90A3\u4E9B\u8CC7\u6599\u7E3D\u6703\u6709\u640D\u58DE\u7684\u5371\u96AA\u3002\nUnicode" +
+            "\u6B63\u5728\u6539\u8B8A\u6240\u6709\u9019\u4E00\u5207\uFF01\n\nUnicode\u7D66\u6BCF\u500B\u5B57\u5143" +
+            "\u63D0\u4F9B\u4E86\u4E00\u500B\u552F\u4E00\u7684\u6578\u4F4D\uFF0C\u4E0D\u8AD6\u662F\u4EC0\u9EBD\u5E73" +
+            "\u81FA\uFF0C\u4E0D\u8AD6\u662F\u4EC0\u9EBD\u7A0B\u5F0F\uFF0C\u4E0D\u8AD6\u4EC0\u9EBD\u8A9E\u8A00\u3002" +
+            "Unicode\u6A19\u6E96\u5DF2\u7D93\u88AB\u9019\u4E9B\u5DE5\u696D\u754C\u7684\u9818\u5C0E\u5011\u6240\u63A1" +
+            "\u7528\uFF0C\u4F8B\u5982\uFF1AApple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys" +
+            " \u548C\u5176\u4ED6\u8A31\u591A\u516C\u53F8\u3002\u6700\u65B0\u7684\u6A19\u6E96\u90FD\u9700\u8981Unicode" +
+            "\uFF0C\u4F8B\u5982XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML\u7B49\u7B49\uFF0C\u4E26\u4E14" +
+            "\uFF0CUnicode\u662F\u5BE6\u73FEISO/IEC 10646\u7684\u6B63\u898F\u65B9\u5F0F\u3002\u8A31\u591A\u4F5C\u696D" +
+            "\u7CFB\u7D71\uFF0C\u6240\u6709\u6700\u65B0\u7684\u700F\u89BD\u5668\u548C \u8A31\u591A\u5176\u4ED6\u7523" +
+            "\u54C1\u90FD\u652F\u63F4\u5B83\u3002Unicode\u6A19\u6E96\u7684\u51FA\u73FE\u548C\u652F\u63F4\u5B83\u5DE5" +
+            "\u5177\u7684\u5B58\u5728\uFF0C\u662F\u8FD1\u4F86\u5168\u7403\u8EDF\u9AD4\u6280\u8853\u6700\u91CD\u8981" +
+            "\u7684\u767C\u5C55\u8DA8\u52E2\u3002\n\n\u5C07Unicode\u8207\u5BA2\u6236\u4F3A\u670D\u5668\u6216\u591A" +
+            "\u5C64\u61C9\u7528\u7A0B\u5F0F\u548C\u7DB2\u969B\u7DB2\u8DEF\u7D50\u5408\uFF0C\u6BD4\u4F7F\u7528\u50B3" +
+            "\u7D71\u5B57\u5143\u96C6\u7BC0\u7701\u8CBB\u7528\u3002Unicode\u4F7F\u55AE\u4E00\u8EDF\u9AD4\u7523\u54C1" +
+            "\u6216\u55AE\u4E00\u7DB2\u7AD9\u80FD\u5920\u8CAB\u7A7F\u591A\u500B\u5E73\u81FA\uFF0C\u8A9E\u8A00\u548C" +
+            "\u570B\u5BB6\uFF0C\u800C\u4E0D\u9700\u8981\u91CD\u5EFA\u3002\u5B83\u53EF\u5C07\u8CC7\u6599\u50B3\u8F38" +
+            "\u5230\u8A31\u591A\u4E0D\u540C\u7684\u7CFB\u7D71\uFF0C\u800C\u7121\u640D\u58DE\u3002\n\u95DC\u65BCUnicode" +
+            "\u5B78\u8853\u5B78\u6703\n\nUnicode\u5B78\u8853\u5B78\u6703",
+           
+            "\u00C7\'\u00EBsht\u00EB UNICODE?\n\nUnicode siguron nj\u00EB num\u00EBr t\u00EB vet\u00EBm p\u00EBr \u00E7do " +
+            "g\u00EBrm\u00EB,\np\u00EBr cil\u00EBndo platform\u00EB,\np\u00EBr cilindo program,\np\u00EBr cil\u00EBndo " +
+            "gjuh\u00EB.\n\nN\u00EB themel, kompjuterat veprojn\u00EB me an\u00EBn e numrave. Ata ruajn\u00EB g\u00EBrmat " +
+            "dhe sh\u00EBnjat (karakteret) e tjera duke u caktuar nga nj\u00EB num\u00EBr (kod). Para zbulimit t\u00EB " +
+            "Unicode-s, kishte qindra sisteme kodimi t\u00EB ndrysh\u00EBm p\u00EBr t\u00EB caktuar k\u00EBta numra. Por " +
+            "asnj\u00EB kodim i vet\u00EBm nuk mund t\u00EB p\u00EBrmbante mjaft sh\u00EBnja: p\u00EBr shembull, vet\u00EBm " +
+            "Bashkimi Europian k\u00EBrkon disa kodime t\u00EB ndryshme p\u00EBr t\u00EB mbuluar gjith\u00EB gjuh\u00EBt e tij. " +
+            "Edhe p\u00EBr nj\u00EB gjuh\u00EB t\u00EB vetme si Anglishtja asnj\u00EB kodim nuk ishte i mjaftuesh\u00EBm " +
+            "p\u00EBr t\u00EB gjitha g\u00EBrmat, sh\u00EBnjat e pik\u00EBsimit, dhe simbolet teknike n\u00EB p\u00EBrdorim " +
+            "t\u00EB zakonsh\u00EBm.\n\nK\u00EBta sisteme kodimi gjithashtu p\u00EBrplasen me nj\u00EBri-tjetrin. Dmth, dy " +
+            "kodime mundet q\u00EB t\u00EB p\u00EBrdorin t\u00EB nj\u00EBjtin num\u00EBr p\u00EBr dy sh\u00EBnja krejt t\u00EB " +
+            "ndryshme, ose dy numra t\u00EB ndrysh\u00EBm p\u00EBr t\u00EB nj\u00EBjt\u00EBn sh\u00EBnj\u00EB. Secili kompjuter " +
+            "(sidomos sh\u00EBrbyesit - serverat) duhet t\u00EB jet\u00EB i aft\u00EB t\u00EB mb\u00EBshtes\u00EB shum\u00EB " +
+            "kodime, dhe megjithat\u00EB kur t\u00EB dh\u00EBnat kalohen p\u00EBrmes kodimeve t\u00EB ndryshme ose platformave, " +
+            "\u00EBsht\u00EB gjithmon\u00EB rreziku i korruptimit t\u00EB tyre.\nUnicode po e ndryshon gjith\u00EB k\u00EBt\u00EB " +
+            "rr\u00EBmuj\u00EB!\n\nUnicode siguron nj\u00EB num\u00EBr t\u00EB vet\u00EBm p\u00EBr \u00E7do g\u00EBrm\u00EB, " +
+            "p\u00EBr cil\u00EBndo platform\u00EB, p\u00EBr cilindo program, p\u00EBr cil\u00EBndo gjuh\u00EB. Standarti Unicode " +
+            "\u00EBsht\u00EB f\u00EBmij\u00EBruar (adaptuar) nga udh\u00EBheq\u00EBs t\u00EB till\u00EB t\u00EB industris\u00EB " +
+            "si Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys dhe shum\u00EB t\u00EB tjer\u00EB. " +
+            "Unicode k\u00EBrkohet nga standarte moderne si XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML, etj., " +
+            "dhe \u00EBsht\u00EB m\u00EBnyra zyrtare p\u00EBr t\u00EB zbatuar ISO/IEC 10646. Unicode \u00EBsht\u00EB i " +
+            "mb\u00EBshtetur nga shum\u00EB sisteme vepruese (operativ\u00EB), gjith\u00EB shfletuesat (brauzerat) modern\u00EB, " +
+            "dhe shum\u00EB produkte t\u00EB tjera. Dalja n\u00EB drit\u00EB e Standartit Unicode, dhe pasja e veglave q\u00EB " +
+            "e mb\u00EBshtesin, jan\u00EB midis faktor\u00EBve m\u00EB dometh\u00EBn\u00EBs t\u00EB koh\u00EBve t\u00EB fundit " +
+            "t\u00EB drejtimeve t\u00EB zhvillimit t\u00EB p\u00EBrgjith\u00EBshme t\u00EB teknologjive t\u00EB softuer\u00EBve." +
+            "\n\nP\u00EBrtrup\u00EBzimi i Unicode n\u00EB zbatimet klient-server apo shum\u00EB-shkall\u00EBsh si dhe n\u00EB " +
+            "faqet internet, krijon mund\u00EBsin\u00EB p\u00EBr kursime kostoje t\u00EB ndjeshme n\u00EB krahasim me " +
+            "p\u00EBrdorimin e kodimeve t\u00EB m\u00EBparshme. Unicode b\u00EBn t\u00EB mundur q\u00EB nj\u00EB produkt " +
+            "softuer ose nj\u00EB faqe interneti t\u00EB p\u00EBrdoret p\u00EBr shum\u00EB platforma, gjuh\u00EB dhe vende " +
+            "pa re-inxhinierim. Ai lejon t\u00EB dh\u00EBnat t\u00EB kalohen p\u00EBrmes shum\u00EB sistemeve t\u00EB ndryshme " +
+            "pa korruptim.",
+                
+            "\u092F\u0942\u0928\u093F\u0915\u094B\u0921 \u0915\u094D\u092F\u093E \u0939\u0948?\n\n\u092F\u0942\u0928\u093F\u0915" +
+            "\u094B\u0921 \u092A\u094D\u0930\u0924\u094D\u092F\u0947\u0915 \u0905\u0915\u094D\u0937\u0930 \u0915\u0947 " +
+            "\u0932\u093F\u090F \u090F\u0915 \u0935\u093F\u0936\u0947\u0937 \u0928\u092E\u094D\u092C\u0930 \u092A\u094D" +
+            "\u0930\u0926\u093E\u0928 \u0915\u0930\u0924\u093E \u0939\u0948,\n\u091A\u093E\u0939\u0947 \u0915\u094B\u0908 " +
+            "\u092D\u0940 \u092A\u094D\u0932\u0948\u091F\u092B\u0949\u0930\u094D\u092E \u0939\u094B,\n\u091A\u093E\u0939\u0947" +
+            " \u0915\u094B\u0908 \u092D\u0940 \u092A\u094D\u0930\u094B\u0917\u094D\u0930\u093E\u092E \u0939\u094B," +
+            "\n\u091A\u093E\u0939\u0947 \u0915\u094B\u0908 \u092D\u0940 \u092D\u093E\u0937\u093E \u0939\u094B\u0964\n" +
+            "\n\u0915\u092E\u094D\u092A\u094D\u092F\u0942\u091F\u0930, \u092E\u0942\u0932 \u0930\u0942\u092A \u0938\u0947," +
+            " \u0928\u0902\u092C\u0930\u094B\u0902 \u0938\u0947 \u0938\u092E\u094D\u092C\u0902\u0927 \u0930\u0916\u0924\u0947" +
+            " \u0939\u0948\u0902\u0964 \u092F\u0947 \u092A\u094D\u0930\u0924\u094D\u092F\u0947\u0915 \u0905\u0915\u094D\u0937\u0930" +
+            " \u0914\u0930 \u0935\u0930\u094D\u0923 \u0915\u0947 \u0932\u093F\u090F \u090F\u0915 \u0928\u0902\u092C\u0930 " +
+            "\u0928\u093F\u0930\u094D\u0927\u093E\u0930\u093F\u0924 \u0915\u0930\u0915\u0947 \u0905\u0915\u094D\u0937\u0930" +
+            " \u0914\u0930 \u0935\u0930\u094D\u0923 \u0938\u0902\u0917\u094D\u0930\u0939\u093F\u0924 \u0915\u0930\u0924\u0947" +
+            " \u0939\u0948\u0902\u0964 \u092F\u0942\u0928\u093F\u0915\u094B\u0921 \u0915\u093E \u0906\u0935\u093F\u0937" +
+            "\u094D\u0915\u093E\u0930 \u0939\u094B\u0928\u0947 \u0938\u0947 \u092A\u0939\u0932\u0947, \u0910\u0938\u0947" +
+            " \u0928\u0902\u092C\u0930 \u0926\u0947\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0938\u0948\u0902\u0915" +
+            "\u0921\u094B\u0902 \u0935\u093F\u092D\u093F\u0928\u094D\u0928 \u0938\u0902\u0915\u0947\u0924 \u0932\u093F" +
+            "\u092A\u093F \u092A\u094D\u0930\u0923\u093E\u0932\u093F\u092F\u093E\u0902 \u0925\u0940\u0902\u0964 \u0915" +
+            "\u093F\u0938\u0940 \u090F\u0915 \u0938\u0902\u0915\u0947\u0924 \u0932\u093F\u092A\u093F \u092E\u0947\u0902 " +
+            "\u092A\u0930\u094D\u092F\u093E\u092A\u094D\u0924 \u0905\u0915\u094D\u0937\u0930 \u0928\u0939\u0940\u0902 " +
+            "\u0939\u094B \u0938\u0915\u0924\u0947 \u0939\u0948\u0902 : \u0909\u0926\u093E\u0939\u0930\u0923 \u0915\u0947" +
+            " \u0932\u093F\u090F, \u092F\u0942\u0930\u094B\u092A\u093F\u092F \u0938\u0902\u0918 \u0915\u094B \u0905\u0915" +
+            "\u0947\u0932\u0947 \u0939\u0940, \u0905\u092A\u0928\u0940 \u0938\u092D\u0940 \u092D\u093E\u0937\u093E\u0912\u0902" +
+            " \u0915\u094B \u0915\u0935\u0930 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0905\u0928\u0947\u0915" +
+            " \u0935\u093F\u092D\u093F\u0928\u094D\u0928 \u0938\u0902\u0915\u0947\u0924 \u0932\u093F\u092A\u093F\u092F\u094B\u0902" +
+            " \u0915\u0940 \u0906\u0935\u0936\u094D\u092F\u0915\u0924\u093E \u0939\u094B\u0924\u0940 \u0939\u0948\u0964 " +
+            "\u0905\u0902\u0917\u094D\u0930\u0947\u091C\u0940 \u091C\u0948\u0938\u0940 \u092D\u093E\u0937\u093E \u0915\u0947" +
+            " \u0932\u093F\u090F \u092D\u0940, \u0938\u092D\u0940 \u0905\u0915\u094D\u0937\u0930\u094B\u0902, " +
+            "\u0935\u093F\u0930\u093E\u092E\u091A\u093F\u0928\u094D\u0939\u094B\u0902 \u0914\u0930 \u0938\u093E\u092E" +
+            "\u093E\u0928\u094D\u092F \u092A\u094D\u0930\u092F\u094B\u0917 \u0915\u0947 \u0924\u0915\u0928\u0940\u0915" +
+            "\u0940 \u092A\u094D\u0930\u0924\u0940\u0915\u094B\u0902 \u0939\u0947\u0924\u0941 \u090F\u0915 \u0939\u0940" +
+            " \u0938\u0902\u0915\u0947\u0924 \u0932\u093F\u092A\u093F \u092A\u0930\u094D\u092F\u093E\u092A\u094D\u0924" +
+            " \u0928\u0939\u0940\u0902 \u0925\u0940\u0964\n\n\u092F\u0947 \u0938\u0902\u0915\u0947\u0924 \u0932\u093F" +
+            "\u092A\u093F \u092A\u094D\u0930\u0923\u093E\u0932\u093F\u092F\u093E\u0902 \u092A\u0930\u0938\u094D\u092A\u0930" +
+            " \u0935\u093F\u0930\u094B\u0927\u0940 \u092D\u0940 \u0939\u0948\u0902\u0964 \u0907\u0938\u0940\u0932\u093F\u090F," +
+            " \u0926\u094B \u0938\u0902\u0915\u0947\u0924 \u0932\u093F\u092A\u093F\u092F\u093E\u0902 \u0926\u094B " +
+            "\u0935\u093F\u092D\u093F\u0928\u094D\u0928 \u0905\u0915\u094D\u0937\u0930\u094B\u0902 \u0915\u0947 " +
+            "\u0932\u093F\u090F, \u090F\u0915 \u0939\u0940 \u0928\u0902\u092C\u0930 \u092A\u094D\u0930\u092F\u094B\u0917" +
+            " \u0915\u0930 \u0938\u0915\u0924\u0940 \u0939\u0948\u0902, \u0905\u0925\u0935\u093E \u0938\u092E\u093E\u0928" +
+            " \u0905\u0915\u094D\u0937\u0930 \u0915\u0947 \u0932\u093F\u090F \u0935\u093F\u092D\u093F\u0928\u094D\u0928" +
+            " \u0928\u092E\u094D\u092C\u0930\u094B\u0902 \u0915\u093E \u092A\u094D\u0930\u092F\u094B\u0917 \u0915\u0930" +
+            " \u0938\u0915\u0924\u0940 \u0939\u0948\u0902\u0964 \u0915\u093F\u0938\u0940 \u092D\u0940 \u0915\u092E\u094D" +
+            "\u092A\u094D\u092F\u0942\u091F\u0930 (\u0935\u093F\u0936\u0947\u0937 \u0930\u0942\u092A \u0938\u0947 " +
+            "\u0938\u0930\u094D\u0935\u0930) \u0915\u094B \u0935\u093F\u092D\u093F\u0928\u094D\u0928 \u0938\u0902\u0915" +
+            "\u0947\u0924 \u0932\u093F\u092A\u093F\u092F\u093E\u0902 \u0938\u0902\u092D\u093E\u0932\u0928\u0940 \u092A" +
+            "\u0921\u093C\u0924\u0940 \u0939\u0948; \u092B\u093F\u0930 \u092D\u0940 \u091C\u092C \u0926\u094B \u0935" +
+            "\u093F\u092D\u093F\u0928\u094D\u0928 \u0938\u0902\u0915\u0947\u0924 \u0932\u093F\u092A\u093F\u092F\u094B" +
+            "\u0902 \u0905\u0925\u0935\u093E \u092A\u094D\u0932\u0948\u091F\u092B\u0949\u0930\u094D\u092E\u094B\u0902" +
+            " \u0915\u0947 \u092C\u0940\u091A \u0921\u093E\u091F\u093E \u092D\u0947\u091C\u093E \u091C\u093E\u0924\u093E" +
+            " \u0939\u0948 \u0924\u094B \u0909\u0938 \u0921\u093E\u091F\u093E \u0915\u0947 \u0939\u092E\u0947\u0936\u093E" +
+            " \u0916\u0930\u093E\u092C \u0939\u094B\u0928\u0947 \u0915\u093E \u091C\u094B\u0916\u093F\u092E " +
+            "\u0930\u0939\u0924\u093E \u0939\u0948\u0964\n\u092F\u0942\u0928\u093F\u0915\u094B\u0921 \u0938\u0947" +
+            " \u092F\u0939 \u0938\u092C \u0915\u0941\u091B \u092C\u0926\u0932 \u0930\u0939\u093E \u0939\u0948!\n" +
+            "\n\u092F\u0942\u0928\u093F\u0915\u094B\u0921, \u092A\u094D\u0930\u0924\u094D\u092F\u0947\u0915 " +
+            "\u0905\u0915\u094D\u0937\u0930 \u0915\u0947 \u0932\u093F\u090F \u090F\u0915 \u0935\u093F\u0936\u0947\u0937" +
+            " \u0928\u0902\u092C\u0930 \u092A\u094D\u0930\u0926\u093E\u0928 \u0915\u0930\u0924\u093E \u0939\u0948, " +
+            "\u091A\u093E\u0939\u0947 \u0915\u094B\u0908 \u092D\u0940 \u092A\u094D\u0932\u0948\u091F\u092B\u0949\u0930\u094D\u092E" +
+            " \u0939\u094B, \u091A\u093E\u0939\u0947 \u0915\u094B\u0908 \u092D\u0940 \u092A\u094D\u0930\u094B\u0917" +
+            "\u094D\u0930\u093E\u092E \u0939\u094B, \u091A\u093E\u0939\u0947 \u0915\u094B\u0908 \u092D\u0940 \u092D" +
+            "\u093E\u0937\u093E \u0939\u094B\u0964 \u092F\u0942\u0928\u093F\u0915\u094B\u0921 \u0938\u094D\u091F\u0948" +
+            "\u0902\u0921\u0930\u094D\u0921 \u0915\u094B \u0910\u092A\u0932, \u090F\u091A.\u092A\u0940., \u0906\u0908." +
+            "\u092C\u0940.\u090F\u092E., \u091C\u0938\u094D\u091F \u0938\u093F\u0938\u094D\u091F\u092E, \u092E\u093E" +
+            "\u0908\u0915\u094D\u0930\u094B\u0938\u0949\u092B\u094D\u091F, \u0914\u0930\u0947\u0915\u0932, " +
+            "\u0938\u0948\u092A, \u0938\u0928, \u0938\u093E\u0908\u092C\u0947\u0938, \u092F\u0942\u0928\u093F\u0938" +
+            "\u093F\u0938 \u091C\u0948\u0938\u0940 \u0909\u0926\u094D\u092F\u094B\u0917 \u0915\u0940 \u092A\u094D" +
+            "\u0930\u092E\u0941\u0916 \u0915\u092E\u094D\u092A\u0928\u093F\u092F\u094B\u0902 \u0914\u0930 \u0915\u0908" +
+            " \u0905\u0928\u094D\u092F \u0928\u0947 \u0905\u092A\u0928\u093E\u092F\u093E \u0939\u0948\u0964 \u092F" +
+            "\u0942\u0928\u093F\u0915\u094B\u0921 \u0915\u0940 \u0906\u0935\u0936\u094D\u092F\u0915\u0924\u093E " +
+            "\u0906\u0927\u0941\u0928\u093F\u0915 \u092E\u093E\u0928\u0926\u0902\u0921\u094B\u0902, \u091C\u0948" +
+            "\u0938\u0947 \u090F\u0915\u094D\u0938.\u090F\u092E.\u090F\u0932., \u091C\u093E\u0935\u093E, \u090F" +
+            "\u0915\u092E\u093E \u0938\u094D\u0915\u094D\u0930\u093F\u092A\u094D\u091F (\u091C\u093E\u0935\u093E" +
+            " \u0938\u094D\u0915\u094D\u0930\u093F\u092A\u094D\u091F), \u090F\u0932.\u0921\u0940.\u090F.\u092A\u0940.," +
+            " \u0915\u094B\u0930\u094D\u092C\u093E 3.0, \u0921\u092C\u094D\u0932\u094D\u092F\u0942.\u090F\u092E." +
+            "\u090F\u0932. \u0915\u0947 \u0932\u093F\u090F \u0939\u094B\u0924\u0940 \u0939\u0948 \u0914\u0930 " +
+            "\u092F\u0939 \u0906\u0908.\u090F\u0938.\u0913./\u0906\u0908.\u0908.\u0938\u0940. 10646 \u0915\u094B" +
+            " \u0932\u093E\u0917\u0942 \u0915\u0930\u0928\u0947 \u0915\u093E \u0905\u0927\u093F\u0915\u093E\u0930\u093F\u0915" +
+            " \u0924\u0930\u0940\u0915\u093E \u0939\u0948\u0964 \u092F\u0939 \u0915\u0908 \u0938\u0902\u091A\u093E\u0932\u0928 " +
+            "\u092A\u094D\u0930\u0923\u093E\u0932\u093F\u092F\u094B\u0902, \u0938\u092D\u0940 \u0906\u0927\u0941" +
+            "\u0928\u093F\u0915 \u092C\u094D\u0930\u093E\u0909\u091C\u0930\u094B\u0902 \u0914\u0930 \u0915\u0908" +
+            " \u0905\u0928\u094D\u092F \u0909\u0924\u094D\u092A\u093E\u0926\u094B\u0902 \u092E\u0947\u0902 \u0939" +
+            "\u094B\u0924\u093E \u0939\u0948\u0964 \u092F\u0942\u0928\u093F\u0915\u094B\u0921 \u0938\u094D\u091F" +
+            "\u0948\u0902\u0921\u0930\u094D\u0921 \u0915\u0940 \u0909\u0924\u094D\u092A\u0924\u093F \u0914\u0930" +
+            " \u0907\u0938\u0915\u0947 \u0938\u0939\u093E\u092F\u0915 \u0909\u092A\u0915\u0930\u0923\u094B\u0902" +
+            " \u0915\u0940 \u0909\u092A\u0932\u092C\u094D\u0927\u0924\u093E, \u0939\u093E\u0932 \u0939\u0940" +
+            " \u0915\u0947 \u0905\u0924\u093F \u092E\u0939\u0924\u094D\u0935\u092A\u0942\u0930\u094D\u0923" +
+            " \u0935\u093F\u0936\u094D\u0935\u0935\u094D\u092F\u093E\u092A\u0940 \u0938\u0949\u092B\u094D\u091F" +
+            "\u0935\u0947\u092F\u0930 \u091F\u0947\u0915\u094D\u0928\u094B\u0932\u0949\u091C\u0940 \u0930\u0941" +
+            "\u091D\u093E\u0928\u094B\u0902 \u092E\u0947\u0902 \u0938\u0947 \u0939\u0948\u0902\u0964\n\n\u092F" +
+            "\u0942\u0928\u093F\u0915\u094B\u0921 \u0915\u094B \u0917\u094D\u0930\u093E\u0939\u0915-\u0938\u0930" +
+            "\u094D\u0935\u0930 \u0905\u0925\u0935\u093E \u092C\u0939\u0941-\u0906\u092F\u093E\u092E\u0940 " +
+            "\u0909\u092A\u0915\u0930\u0923\u094B\u0902 \u0914\u0930 \u0935\u0947\u092C\u0938\u093E\u0907\u091F" +
+            "\u094B\u0902 \u092E\u0947\u0902 \u0936\u093E\u092E\u093F\u0932 \u0915\u0930\u0928\u0947 \u0938\u0947," +
+            " \u092A\u0930\u0902\u092A\u0930\u093E\u0917\u0924 \u0909\u092A\u0915\u0930\u0923\u094B\u0902 \u0915" +
+            "\u0947 \u092A\u094D\u0930\u092F\u094B\u0917 \u0915\u0940 \u0905\u092A\u0947\u0915\u094D\u0937\u093E" +
+            " \u0916\u0930\u094D\u091A \u092E\u0947\u0902 \u0905\u0924\u094D\u092F\u0927\u093F\u0915 \u092C\u091A" +
+            "\u0924 \u0939\u094B\u0924\u0940 \u0939\u0948\u0964 \u092F\u0942\u0928\u093F\u0915\u094B\u0921 \u0938" +
+            "\u0947 \u090F\u0915 \u0910\u0938\u093E \u0905\u0915\u0947\u0932\u093E \u0938\u0949\u092B\u094D\u091F" +
+            "\u0935\u0947\u092F\u0930 \u0909\u0924\u094D\u092A\u093E\u0926 \u0905\u0925\u0935\u093E \u0905\u0915" +
+            "\u0947\u0932\u093E \u0935\u0947\u092C\u0938\u093E\u0907\u091F \u092E\u093F\u0932 \u091C\u093E\u0924" +
+            "\u093E \u0939\u0948, \u091C\u093F\u0938\u0947 \u0930\u0940-\u0907\u0902\u091C\u0940\u0928\u093F\u092F" +
+            "\u0930\u093F\u0902\u0917 \u0915\u0947 \u092C\u093F\u0928\u093E \u0935\u093F\u092D\u093F\u0928\u094D" +
+            "\u0928 \u092A\u094D\u0932\u0948\u091F\u092B\u0949\u0930\u094D\u092E\u094B\u0902, \u092D\u093E\u0937" +
+            "\u093E\u0913\u0902 \u0914\u0930 \u0926\u0947\u0936\u094B\u0902 \u092E\u0947\u0902 \u0909\u092A\u092F" +
+            "\u094B\u0917 \u0915\u093F\u092F\u093E \u091C\u093E \u0938\u0915\u0924\u093E \u0939\u0948\u0964 \u0907" +
+            "\u0938\u0938\u0947 \u0921\u093E\u091F\u093E \u0915\u094B \u092C\u093F\u0928\u093E \u0915\u093F\u0938" +
+            "\u0940 \u092C\u093E\u0927\u093E \u0915\u0947 \u0935\u093F\u092D\u093F\u0928\u094D\u0928 \u092A\u094D" +
+            "\u0930\u0923\u093E\u0932\u093F\u092F\u094B\u0902 \u0938\u0947 \u0939\u094B\u0915\u0930 \u0932\u0947 " +
+            "\u091C\u093E\u092F\u093E \u091C\u093E \u0938\u0915\u0924\u093E \u0939\u0948\u0964\n",
+            
+            "\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.\n\n\u0E23\u0E30\u0E1A\u0E1A encoding \u0E40\u0E2B" +
+            "\u0E25\u0E48\u0E32\u0E19\u0E35\u0E49\u0E22\u0E31\u0E07\u0E02\u0E31\u0E14\u0E41\u0E22\u0E49\u0E07\u0E0B\u0E36" +
+            "\u0E48\u0E07\u0E01\u0E31\u0E19\u0E41\u0E25\u0E30\u0E01\u0E31\u0E19. \u0E19\u0E31\u0E48\u0E19\u0E01\u0E47" +
+            "\u0E04\u0E37\u0E2D, \u0E43\u0E19\u0E2A\u0E2D\u0E07 encoding \u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16\u0E43\u0E0A" +
+            "\u0E49\u0E2B\u0E21\u0E32\u0E22\u0E40\u0E25\u0E02\u0E40\u0E14\u0E35\u0E22\u0E27\u0E01\u0E31\u0E19\u0E2A\u0E33" +
+            "\u0E2B\u0E23\u0E31\u0E1A\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E02\u0E23\u0E30\u0E2A\u0E2D\u0E07\u0E15\u0E31" +
+            "\u0E27\u0E17\u0E35\u0E48\u0E41\u0E15\u0E01\u0E15\u0E48\u0E32\u0E07\u0E01\u0E31\u0E19,\u0E2B\u0E23\u0E37\u0E2D" +
+            "\u0E43\u0E0A\u0E49\u0E2B\u0E21\u0E32\u0E22\u0E40\u0E25\u0E02\u0E15\u0E48\u0E32\u0E07\u0E01\u0E31\u0E19\u0E2A" +
+            "\u0E33\u0E2B\u0E23\u0E31\u0E1A\u0E2D\u0E31\u0E01\u0E02\u0E23\u0E30\u0E15\u0E31\u0E27\u0E40\u0E14\u0E35\u0E22" +
+            "\u0E27\u0E01\u0E31\u0E19. \u0E43\u0E19\u0E23\u0E30\u0E1A\u0E1A\u0E04\u0E2D\u0E21\u0E1E\u0E34\u0E27\u0E40\u0E15" +
+            "\u0E2D\u0E23\u0E4C (\u0E42\u0E14\u0E22\u0E40\u0E09\u0E1E\u0E32\u0E30\u0E40\u0E0B\u0E34\u0E23\u0E4C\u0E1F\u0E40" +
+            "\u0E27\u0E2D\u0E23\u0E4C) \u0E15\u0E49\u0E2D\u0E07\u0E21\u0E35\u0E01\u0E32\u0E23\u0E2A\u0E19\u0E31\u0E1A\u0E2A" +
+            "\u0E19\u0E38\u0E19\u0E2B\u0E25\u0E32\u0E22 encoding; \u0E41\u0E25\u0E30\u0E40\u0E21\u0E37\u0E48\u0E2D\u0E02\u0E49" +
+            "\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1C\u0E48\u0E32\u0E19\u0E44\u0E1B\u0E21\u0E32\u0E23\u0E30\u0E2B" +
+            "\u0E27\u0E48\u0E32\u0E07\u0E01\u0E32\u0E23\u0E40\u0E02\u0E49\u0E32\u0E23\u0E2B\u0E31\u0E2A\u0E2B\u0E23\u0E37" +
+            "\u0E2D\u0E41\u0E1E\u0E25\u0E47\u0E15\u0E1F\u0E2D\u0E23\u0E4C\u0E21\u0E17\u0E35\u0E48\u0E15\u0E48\u0E32\u0E07" +
+            "\u0E01\u0E31\u0E19, \u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E19\u0E31\u0E49\u0E19\u0E08\u0E30\u0E40\u0E2A\u0E35" +
+            "\u0E48\u0E22\u0E07\u0E15\u0E48\u0E2D\u0E01\u0E32\u0E23\u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14\u0E40\u0E2A" +
+            "\u0E35\u0E22\u0E2B\u0E32\u0E22.\nUnicode \u0E08\u0E30\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25" +
+            "\u0E07\u0E2A\u0E34\u0E48\u0E07\u0E40\u0E2B\u0E25\u0E48\u0E32\u0E19\u0E31\u0E49\u0E19\u0E17\u0E31\u0E49\u0E07\u0E2B" +
+            "\u0E21\u0E14!\n\nUnicode \u0E01\u0E33\u0E2B\u0E19\u0E14\u0E2B\u0E21\u0E32\u0E22\u0E40\u0E25\u0E02\u0E40\u0E09" +
+            "\u0E1E\u0E32\u0E30\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A\u0E41\u0E15\u0E48\u0E25\u0E30\u0E2D\u0E31\u0E01\u0E02" +
+            "\u0E23\u0E30, \u0E42\u0E14\u0E22\u0E44\u0E21\u0E48\u0E2A\u0E19\u0E43\u0E08\u0E27\u0E48\u0E32\u0E40\u0E1B\u0E47" +
+            "\u0E19\u0E41\u0E1E\u0E25\u0E47\u0E15\u0E1F\u0E2D\u0E23\u0E4C\u0E21\u0E43\u0E14, \u0E44\u0E21\u0E48\u0E02\u0E36" +
+            "\u0E49\u0E19\u0E01\u0E31\u0E1A\u0E27\u0E48\u0E32\u0E08\u0E30\u0E40\u0E1B\u0E47\u0E19\u0E42\u0E1B\u0E23\u0E41" +
+            "\u0E01\u0E23\u0E21\u0E43\u0E14\u0E41\u0E25\u0E30\u0E44\u0E21\u0E48\u0E27\u0E48\u0E32\u0E08\u0E30\u0E40\u0E1B" +
+            "\u0E47\u0E19\u0E20\u0E32\u0E29\u0E32\u0E43\u0E14. \u0E21\u0E32\u0E15\u0E23\u0E10\u0E32\u0E19 Unicode \u0E44" +
+            "\u0E14\u0E49\u0E16\u0E39\u0E01\u0E19\u0E33\u0E44\u0E1B\u0E43\u0E0A\u0E49\u0E42\u0E14\u0E22\u0E1C\u0E39\u0E49" +
+            "\u0E19\u0E33\u0E43\u0E19\u0E2D\u0E38\u0E15\u0E2A\u0E32\u0E2B\u0E01\u0E23\u0E23\u0E21 \u0E40\u0E0A\u0E48\u0E19 " +
+            "Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys \u0E41\u0E25\u0E30\u0E2D\u0E37\u0E48" +
+            "\u0E19\u0E46 \u0E2D\u0E35\u0E01\u0E21\u0E32\u0E01. Unicode \u0E40\u0E1B\u0E47\u0E19\u0E2A\u0E34\u0E48\u0E07" +
+            "\u0E17\u0E35\u0E48\u0E08\u0E33\u0E40\u0E1B\u0E47\u0E19\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A\u0E21\u0E32\u0E15" +
+            "\u0E23\u0E10\u0E32\u0E19\u0E43\u0E2B\u0E21\u0E48\u0E46 \u0E40\u0E0A\u0E48\u0E19 XML, Java, ECMAScript (JavaScript), " +
+            "LDAP, CORBA 3.0, WML \u0E2F\u0E25\u0E2F., \u0E41\u0E25\u0E30\u0E40\u0E1B\u0E47\u0E19\u0E41\u0E19\u0E27\u0E17\u0E32" +
+            "\u0E07\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E40\u0E1B\u0E47\u0E19\u0E17\u0E32\u0E07\u0E01\u0E32\u0E23\u0E43\u0E19\u0E01" +
+            "\u0E32\u0E23\u0E17\u0E33 ISO/IEC 10646. Unicode \u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A\u0E01\u0E32\u0E23\u0E2A\u0E19" +
+            "\u0E31\u0E1A\u0E2A\u0E19\u0E38\u0E19\u0E43\u0E19\u0E23\u0E30\u0E1A\u0E1A\u0E1B\u0E0F\u0E34\u0E1A\u0E31\u0E15\u0E34" +
+            "\u0E01\u0E32\u0E23\u0E08\u0E33\u0E19\u0E27\u0E19\u0E21\u0E32\u0E01, \u0E1A\u0E23\u0E32\u0E27\u0E40\u0E0B\u0E2D\u0E23" +
+            "\u0E4C\u0E43\u0E2B\u0E21\u0E48\u0E46 \u0E17\u0E01\u0E15\u0E31\u0E27, \u0E41\u0E25\u0E30\u0E1C\u0E25\u0E34\u0E15" +
+            "\u0E20\u0E31\u0E13\u0E11\u0E4C\u0E2D\u0E37\u0E48\u0E19\u0E46 \u0E2D\u0E35\u0E01\u0E21\u0E32\u0E01. \u0E01\u0E32" +
+            "\u0E23\u0E40\u0E01\u0E34\u0E14\u0E02\u0E36\u0E49\u0E19\u0E02\u0E2D\u0E07 Unicode Standard \u0E41\u0E25\u0E30\u0E17" +
+            "\u0E39\u0E25\u0E2A\u0E4C\u0E15\u0E48\u0E32\u0E07\u0E46 \u0E17\u0E35\u0E48\u0E21\u0E35\u0E43\u0E19\u0E01\u0E32" +
+            "\u0E23\u0E2A\u0E19\u0E31\u0E1A\u0E2A\u0E19\u0E38\u0E19 Unicode, \u0E40\u0E1B\u0E47\u0E19\u0E2B\u0E19\u0E36" +
+            "\u0E48\u0E07\u0E43\u0E19\u0E41\u0E19\u0E27\u0E42\u0E19\u0E49\u0E21\u0E17\u0E32\u0E07\u0E40\u0E17\u0E04\u0E42" +
+            "\u0E19\u0E42\u0E25\u0E22\u0E35\u0E0B\u0E2D\u0E1F\u0E15\u0E4C\u0E41\u0E27\u0E23\u0E4C\u0E23\u0E30\u0E14\u0E31" +
+            "\u0E1A\u0E42\u0E25\u0E01\u0E17\u0E35\u0E48\u0E21\u0E35\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E33\u0E04\n",
+            
+            "\u4EC0\u4E48\u662FUnicode(\u7EDF\u4E00\u7801)?\n\nUnicode\u7ED9\u6BCF\u4E2A\u5B57\u7B26\u63D0\u4F9B\u4E86" +
+            "\u4E00\u4E2A\u552F\u4E00\u7684\u6570\u5B57\uFF0C\n\u4E0D\u8BBA\u662F\u4EC0\u4E48\u5E73\u53F0\uFF0C\n\u4E0D" +
+            "\u8BBA\u662F\u4EC0\u4E48\u7A0B\u5E8F\uFF0C\n\u4E0D\u8BBA\u662F\u4EC0\u4E48\u8BED\u8A00\u3002\n\n\u57FA\u672C" +
+            "\u4E0A\uFF0C\u8BA1\u7B97\u673A\u53EA\u662F\u5904\u7406\u6570\u5B57\u3002\u5B83\u4EEC\u6307\u5B9A\u4E00\u4E2A" +
+            "\u6570\u5B57\uFF0C\u6765\u50A8\u5B58\u5B57\u6BCD\u6216\u5176\u4ED6\u5B57\u7B26\u3002\u5728\u521B\u9020Unicode" +
+            "\u4E4B\u524D\uFF0C\u6709\u6570\u767E\u79CD\u6307\u5B9A\u8FD9\u4E9B\u6570\u5B57\u7684\u7F16\u7801\u7CFB\u7EDF" +
+            "\u3002\u6CA1\u6709\u4E00\u4E2A\u7F16\u7801\u53EF\u4EE5\u5305\u542B\u8DB3\u591F\u7684\u5B57\u7B26\uFF1A\u4F8B" +
+            "\u5982\uFF0C\u5355\u5355\u6B27\u5DDE\u5171\u540C\u4F53\u5C31\u9700\u8981\u597D\u51E0\u79CD\u4E0D\u540C\u7684" +
+            "\u7F16\u7801\u6765\u5305\u62EC\u6240\u6709\u7684\u8BED\u8A00\u3002\u5373\u4F7F\u662F\u5355\u4E00\u79CD\u8BED" +
+            "\u8A00\uFF0C\u4F8B\u5982\u82F1\u8BED\uFF0C\u4E5F\u6CA1\u6709\u54EA\u4E00\u4E2A\u7F16\u7801\u53EF\u4EE5\u9002" +
+            "\u7528\u4E8E\u6240\u6709\u7684\u5B57\u6BCD\uFF0C\u6807\u70B9\u7B26\u53F7\uFF0C\u548C\u5E38\u7528\u7684\u6280" +
+            "\u672F\u7B26\u53F7\u3002\n\n\u8FD9\u4E9B\u7F16\u7801\u7CFB\u7EDF\u4E5F\u4F1A\u4E92\u76F8\u51B2\u7A81\u3002" +
+            "\u4E5F\u5C31\u662F\u8BF4\uFF0C\u4E24\u79CD\u7F16\u7801\u53EF\u80FD\u4F7F\u7528\u76F8\u540C\u7684\u6570\u5B57" +
+            "\u4EE3\u8868\u4E24\u4E2A\u4E0D\u540C\u7684\u5B57\u7B26\uFF0C\u6216\u4F7F\u7528\u4E0D\u540C\u7684\u6570\u5B57" +
+            "\u4EE3\u8868\u76F8\u540C\u7684\u5B57\u7B26\u3002\u4EFB\u4F55\u4E00\u53F0\u7279\u5B9A\u7684\u8BA1\u7B97\u673A(" +
+            "\u7279\u522B\u662F\u670D\u52A1\u5668)\u90FD\u9700\u8981\u652F\u6301\u8BB8\u591A\u4E0D\u540C\u7684\u7F16\u7801" +
+            "\uFF0C\u4F46\u662F\uFF0C\u4E0D\u8BBA\u4EC0\u4E48\u65F6\u5019\u6570\u636E\u901A\u8FC7\u4E0D\u540C\u7684\u7F16" +
+            "\u7801\u6216\u5E73\u53F0\u4E4B\u95F4\uFF0C\u90A3\u4E9B\u6570\u636E\u603B\u4F1A\u6709\u635F\u574F\u7684\u5371" +
+            "\u9669\u3002\nUnicode\u6B63\u5728\u6539\u53D8\u6240\u6709\u8FD9\u4E00\u5207\uFF01\n\nUnicode\u7ED9\u6BCF" +
+            "\u4E2A\u5B57\u7B26\u63D0\u4F9B\u4E86\u4E00\u4E2A\u552F\u4E00\u7684\u6570\u5B57\uFF0C\u4E0D\u8BBA\u662F\u4EC0" +
+            "\u4E48\u5E73\u53F0\uFF0C\u4E0D\u8BBA\u662F\u4EC0\u4E48\u7A0B\u5E8F\uFF0C\u4E0D\u8BBA\u4EC0\u4E48\u8BED\u8A00" +
+            "\u3002Unicode\u6807\u51C6\u5DF2\u7ECF\u88AB\u8FD9\u4E9B\u5DE5\u4E1A\u754C\u7684\u9886\u5BFC\u4EEC\u6240\u91C7" +
+            "\u7528\uFF0C\u4F8B\u5982\uFF1AApple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys\u548C" +
+            "\u5176\u5B83\u8BB8\u591A\u516C\u53F8\u3002\u6700\u65B0\u7684\u6807\u51C6\u90FD\u9700\u8981Unicode\uFF0C\u4F8B" +
+            "\u5982XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML\u7B49\u7B49\uFF0C\u5E76\u4E14\uFF0CUnicode" +
+            "\u662F\u5B9E\u73B0ISO/IEC 10646\u7684\u6B63\u89C4\u65B9\u5F0F\u3002\u8BB8\u591A\u64CD\u4F5C\u7CFB\u7EDF\uFF0C" +
+            "\u6240\u6709\u6700\u65B0\u7684\u6D4F\u89C8\u5668\u548C\u8BB8\u591A\u5176\u4ED6\u4EA7\u54C1\u90FD\u652F\u6301" +
+            "\u5B83\u3002Unicode\u6807\u51C6\u7684\u51FA\u73B0\u548C\u652F\u6301\u5B83\u5DE5\u5177\u7684\u5B58\u5728\uFF0C" +
+            "\u662F\u8FD1\u6765\u5168\u7403\u8F6F\u4EF6\u6280\u672F\u6700\u91CD\u8981\u7684\u53D1\u5C55\u8D8B\u52BF\u3002" +
+            "\n\n\u5C06Unicode\u4E0E\u5BA2\u6237\u670D\u52A1\u5668\u6216\u591A\u5C42\u5E94\u7528\u7A0B\u5E8F\u548C\u7F51" +
+            "\u7AD9\u7ED3\u5408\uFF0C\u6BD4\u4F7F\u7528\u4F20\u7EDF\u5B57\u7B26\u96C6\u8282\u7701\u8D39\u7528\u3002Unicode" +
+            "\u4F7F\u5355\u4E00\u8F6F\u4EF6\u4EA7\u54C1\u6216\u5355\u4E00\u7F51\u7AD9\u80FD\u591F\u8D2F\u7A7F\u591A\u4E2A" +
+            "\u5E73\u53F0\uFF0C\u8BED\u8A00\u548C\u56FD\u5BB6\uFF0C\u800C\u4E0D\u9700\u8981\u91CD\u5EFA\u3002\u5B83\u53EF" +
+            "\u5C06\u6570\u636E\u4F20\u8F93\u5230\u8BB8\u591A\u4E0D\u540C\u7684\u7CFB\u7EDF\uFF0C\u800C\u65E0\u635F\u574F" +
+            "\u3002\n\u5173\u4E8EUnicode\u5B66\u672F\u5B66\u4F1A\n\nUnicode\u5B66\u672F\u5B66\u4F1A\u662F\u4E00\u4E2A\u975E" +
+            "\u76C8\u5229\u7684\u7EC4\u7EC7\uFF0C\u662F\u4E3A\u53D1\u5C55\uFF0C\u6269\u5C55\u548C\u63A8\u5E7F\u4F7F\u7528" +
+            "Unicode\u6807\u51C6\u800C\u5EFA\u7ACB\u7684\uFF0CUnicode\u5B66\u672F\u5B66\u4F1A\u8BBE\u7ACB\u4E86\u73B0\u4EE3" +
+            "\u8F6F\u4EF6\u4EA7\u54C1\u548C\u6807\u51C6\u6587\u672C\u7684\u8868\u793A\u6CD5\u3002\u5B66\u672F\u5B66\u4F1A" +
+            "\u7684\u4F1A\u5458\u4EE3\u8868\u4E86\u5E7F\u6CDB\u9886\u57DF\u7684\u8BA1\u7B97\u673A\u548C\u8D44\u8BAF\u5DE5" +
+            "\u4E1A\u7684\u516C\u53F8\u548C\u7EC4\u7EC7\u3002\u5B66\u672F\u5B66\u4F1A\u53EA\u7531\u4F1A\u5458\u63D0\u4F9B" +
+            "\u8D44\u91D1\u3002Unicode\u5B66\u672F\u5B66\u4F1A\u7684\u4F1A\u5458\u8D44\u683C\u5F00\u653E\u7ED9\u4E16\u754C" +
+            "\u4E0A\u4EFB\u4F55\u652F\u6301Unicode\u6807\u51C6\u548C\u5E0C\u671B\u534F\u52A9\u5176\u6269\u5C55\u548C\u6267" +
+            "\u884C\u7684\u7EC4\u7EC7\u53CA\u4E2A\u4EBA\u3002\n",
+            
+            "Mik\u00E4 Unicode on?\n\nUnicode m\u00E4\u00E4ritt\u00E4\u00E4 jokaiselle merkille yksil\u00F6llisen arvon." +
+            "\nRiippumatta k\u00E4ytt\u00F6j\u00E4rjestelm\u00E4st\u00E4\nRiippumatta ohjelmistosta\nRiippumatta kielest" +
+            "\u00E4\n\nTietokoneiden toiminta perustuu numeroiden k\u00E4sittelylle. My\u00F6s kirjaimet ja muut merkit " +
+            "ovat tietokoneiden muistissa lukusarjoina. Ennen Unicodea oli k\u00E4yt\u00F6ss\u00E4 satoja eri tapoja esitt" +
+            "\u00E4\u00E4 merkkej\u00E4 ja kirjaimia mutta yksik\u00E4\u00E4n n\u00E4ist\u00E4 koodisivuista ei kyennyt m" +
+            "\u00E4\u00E4ritt\u00E4m\u00E4\u00E4n kovin kattavaa merkist\u00F6\u00E4. Jo yksinomaan Euroopan Unionissa k" +
+            "\u00E4ytetyille kielille tarvitaan useita erilaisia merkist\u00F6j\u00E4 ja koodisivuja, eik\u00E4 edes englannin " +
+            "kaltaisen, yksinkertaisen kielen kaikkien kirjaimien, v\u00E4limerkkien ja yleisten teknisten symbolien esitt" +
+            "\u00E4minen onnistu yhdell\u00E4 n\u00E4ist\u00E4 koodisivuista.\n\nLis\u00E4ksi koodisivut ovat ristiriidassa" +
+            " kesken\u00E4\u00E4n. Eri koodisivuilla voidaan k\u00E4ytt\u00E4\u00E4 samaa arvoa kahdelle t\u00E4ysin " +
+            "erilaiselle merkille tai samalla merkill\u00E4 voi olla eri arvo eri koodivulla. Jokaisen tietokoneen, varsinkin" +
+            " jos kyseess\u00E4 on palvelin, pit\u00E4\u00E4 tukea lukuisia eri merkist\u00F6j\u00E4 ja koodisivuja ja kun " +
+            "tietoa siirret\u00E4\u00E4n j\u00E4rjestelmien ja merkist\u00F6jen v\u00E4lill\u00E4 on tiedon v\u00E4\u00E4ristymisen" +
+            " ja tuhoutumisen riski suuri.\nUnicode on ratkaisu\n\nUnicodessa jokaiselle merkille on m\u00E4\u00E4ritetty " +
+            "yksil\u00F6llinen, riippumaton arvo. Alan johtavat yritykset, kuten Apple, HP, IBM, JustSystem, Microsoft, " +
+            "Oracle, SAP, Sun, Sybase, Unisys ja lukuisat muut toimijat k\u00E4ytt\u00E4v\u00E4t Unicodea. Unicode on sis" +
+            "\u00E4llytetty vaatimuksena moniin nykyisiin standardeihin, kuten XML, Java, ECMAScript (JavaScript), LDAP, " +
+            "CORBA 3.0 ja WML. Unicode on virallinen keino toteuttaa ISO/IEC 10646 -standardi. Useat k\u00E4ytt\u00F6j\u00E4" +
+            "rjestelm\u00E4t, kaikki internet-selaimet ja monet muut tuotteet k\u00E4ytt\u00E4v\u00E4t Unicodea. Unicoden " +
+            "syntyminen ja sit\u00E4 tukevien ty\u00F6kalujen suuri m\u00E4\u00E4r\u00E4 on yksi viime aikojen merkitt" +
+            "\u00E4vimmist\u00E4 maailmanlaajuisen ohjelmistotuotannon suuntauksista.\n\nUnicoden k\u00E4ytt\u00E4minen " +
+            "palvelintekniikassa, vaativissa sovelluksissa ja internet-sivustoilla tuo merkitt\u00E4vi\u00E4 kustannuss" +
+            "\u00E4\u00E4st\u00F6j\u00E4 verrattuna usean eri koodisivun k\u00E4yt\u00F6lle. Unicoden ansiosta yksitt" +
+            "\u00E4inen sovellus tai sivusto voidaan tarjota useille eri k\u00E4ytt\u00F6j\u00E4rjestelmille ja monilla " +
+            "eri kielill\u00E4 maailmanlaajuisesti, ilman uudelleenohjelmoinnin tarvetta. Tieto kulkee j\u00E4rjestelmien " +
+            "v\u00E4lill\u00E4 vailla tuhoutumisen tai v\u00E4\u00E4ristymisen vaaraa.\nUnicode-konsortio",
+            
+            "Co je Unicode?\n\nUnicode p\u0159i\u0159azuje ka\u017Ed\u00E9mu znaku jedine\u010Dn\u00E9 \u010D\u00EDslo,\nnez" +
+            "\u00E1visle na platform\u011B,\nnez\u00E1visle na programu,\nnez\u00E1visle na jazyce.\n\nPo\u010D\u00EDta\u010De," +
+            " ze sv\u00E9 podstaty, pracuj\u00ED pouze s \u010D\u00EDsly. P\u00EDsmena a dal\u0161\u00ED znaky ukl\u00E1daj\u00ED" +
+            " tak, \u017Ee ka\u017Ed\u00E9mu z nich p\u0159i\u0159ad\u00ED \u010D\u00EDslo. P\u0159ed vznikem Unicode existovaly" +
+            " stovky rozd\u00EDln\u00FDch k\u00F3dovac\u00EDch syst\u00E9m\u016F pro p\u0159i\u0159azov\u00E1n\u00ED t\u011Bchto" +
+            " \u010D\u00EDsel. \u017D\u00E1dn\u00E9 z t\u011Bchto k\u00F3dov\u00E1n\u00ED nemohlo obsahovat dostatek znak\u016F:" +
+            " nap\u0159\u00EDklad Evropsk\u00E1 unie sama pot\u0159ebuje n\u011Bkolik r\u016Fzn\u00FDch k\u00F3dov\u00E1n\u00ED," +
+            " aby pokryla v\u0161echny sv\u00E9 jazyky. Dokonce i pro jeden jedin\u00FD jazyk, jako je angli\u010Dtina, nevyhovovalo" +
+            " \u017E\u00E1dn\u00E9 k\u00F3dov\u00E1n\u00ED pro v\u0161echny p\u00EDsmena, interpunkci a b\u011B\u017En\u011B " +
+            "pou\u017E\u00EDvan\u00E9 technick\u00E9 symboly.\n\nTyto k\u00F3dovac\u00ED syst\u00E9my tak\u00E9 byly v konfliktu" +
+            " jeden s druh\u00FDm. To znamen\u00E1, \u017Ee dv\u011B k\u00F3dov\u00E1n\u00ED mohou pou\u017E\u00EDvat stejn\u00E9" +
+            " \u010D\u00EDslo pro dva r\u016Fzn\u00E9 znaky, nebo pou\u017E\u00EDvat r\u016Fzn\u00E1 \u010D\u00EDsla pro " +
+            "stejn\u00FD znak. Jak\u00FDkoli po\u010D\u00EDta\u010D (zvl\u00E1\u0161t\u011B servery) mus\u00ED podporovat " +
+            "mnoho r\u016Fzn\u00FDch k\u00F3dov\u00E1n\u00ED; p\u0159esto, kdykoli jsou data p\u0159ed\u00E1v\u00E1na mezi " +
+            "r\u016Fzn\u00FDmi k\u00F3dov\u00E1n\u00EDmi nebo platformami, hroz\u00ED, \u017Ee tato data budou po\u0161kozena." +
+            "\n\n \nUnicode toto v\u0161echno m\u011Bn\u00ED!\n\nUnicode p\u0159i\u0159azuje ka\u017Ed\u00E9mu znaku jedine" +
+            "\u010Dn\u00E9 \u010D\u00EDslo, nez\u00E1visle na platform\u011B, nez\u00E1visle na programu, nez\u00E1visle na " +
+            "jazyku. Unicode Standard byl p\u0159ijat takov\u00FDmi pr\u016Fmyslov\u00FDmi v\u016Fdci, jako jsou Apple, HP, " +
+            "IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys a mnoha dal\u0161\u00EDmi. Unicode je vy\u017Eadov" +
+            "\u00E1n modern\u00EDmi standardy, jako jsou XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML atd. a je " +
+            "ofici\u00E1ln\u00ED formou implementace ISO/IEC 10646. Je podporov\u00E1n v mnoha opera\u010Dn\u00EDch syst" +
+            "\u00E9mech, v\u0161ech modern\u00EDch prohl\u00ED\u017Ee\u010D\u00EDch a mnoha dal\u0161\u00EDch produktech. " +
+            "To, \u017Ee se objevil Unicode Standard a dostupnost n\u00E1stroj\u016F, kter\u00E9 jej podporuj\u00ED, pat" +
+            "\u0159\u00ED mezi nejv\u00FDznamn\u011Bj\u0161\u00ED ned\u00E1vn\u00E9 trendy v glob\u00E1ln\u00ED technologii" +
+            " softwaru.\n\nZa\u010Dlen\u011Bn\u00ED Unicode do klient-server nebo v\u00EDcevrstv\u00FDch aplikac\u00ED a " +
+            "webov\u00FDch str\u00E1nek nab\u00EDz\u00ED v\u00FDznamn\u00E9 u\u0161et\u0159en\u00ED n\u00E1klad\u016F oproti " +
+            "d\u0159\u00EDv\u011Bj\u0161\u00EDm znakov\u00FDm sad\u00E1m. Unicode umo\u017E\u0148uje, aby jedin\u00FD " +
+            "softwarov\u00FD produkt nebo jedin\u00E1 webov\u00E1 str\u00E1nka byla zam\u011B\u0159ena na mnoho platforem, " +
+            "jazyk\u016F a zem\u00ED beze zm\u011Bn n\u00E1vrhu. To dovoluje p\u0159en\u00E1\u0161et data p\u0159es mnoho " +
+            "r\u016Fzn\u00FDch syst\u00E9m\u016F bez poru\u0161en\u00ED.",
+            
+            "?\n\n\u05D9\u05D5\u05E0\u05D9\u05E7\u05D5\u05D3 \u05DE\u05E7\u05E6\u05D4 \u05DE\u05E1\u05E4\u05E8 \u05D9\u05D9" +
+            "\u05D7\u05D5\u05D3\u05D9 \u05DC\u05DB\u05DC \u05EA\u05D5,\n\u05DC\u05D0 \u05DE\u05E9\u05E0\u05D4 \u05E2\u05DC " +
+            "\u05D0\u05D9\u05D6\u05D5 \u05E4\u05DC\u05D8\u05E4\u05D5\u05E8\u05DE\u05D4,\n\u05DC\u05D0 \u05DE\u05E9\u05E0\u05D4" +
+            " \u05D1\u05D0\u05D9\u05D6\u05D5 \u05EA\u05D5\u05DB\u05E0\u05D9\u05EA,\n\u05D5\u05DC\u05D0 \u05DE\u05E9\u05E0\u05D4" +
+            " \u05D1\u05D0\u05D9\u05D6\u05D5 \u05E9\u05E4\u05D4.\n\n\u05D1\u05D0\u05D5\u05E4\u05DF \u05D1\u05E1\u05D9\u05E1\u05D9," +
+            " \u05DE\u05D7\u05E9\u05D1\u05D9\u05DD \u05E2\u05D5\u05E1\u05E7\u05D9\u05DD \u05E8\u05E7 \u05D1\u05DE\u05E1\u05E4" +
+            "\u05E8\u05D9\u05DD. \u05D4\u05DD \u05DE\u05D0\u05D7\u05E1\u05E0\u05D9\u05DD \u05D0\u05D5\u05EA\u05D9\u05D5\u05EA" +
+            " \u05D5\u05EA\u05D5\u05D5\u05D9\u05DD \u05D0\u05D7\u05E8\u05D9\u05DD \u05E2\u05DC-\u05D9\u05D3\u05D9 \u05D4\u05E7" +
+            "\u05E6\u05D0\u05EA \u05DE\u05E1\u05E4\u05E8 \u05DC\u05DB\u05DC \u05D0\u05D7\u05D3 \u05DE\u05D4\u05DD. \u05D1\u05D8" +
+            "\u05E8\u05DD \u05D4\u05D5\u05DE\u05E6\u05D0 \u05D4\u05D9\u05D5\u05E0\u05D9\u05E7\u05D5\u05D3, \u05D4\u05D9\u05D5 " +
+            "\u05DE\u05D0\u05D5\u05EA \u05DE\u05E2\u05E8\u05DB\u05D5\u05EA \u05E7\u05D9\u05D3\u05D5\u05D3 \u05E9\u05D5\u05E0" +
+            "\u05D5\u05EA \u05DC\u05D4\u05E7\u05E6\u05D0\u05EA \u05D4\u05DE\u05E1\u05E4\u05E8\u05D9\u05DD \u05D4\u05DC\u05DC" +
+            "\u05D5. \u05D0\u05E3 \u05DC\u05D0 \u05D0\u05D7\u05EA \u05DE\u05D4\u05DF \u05D9\u05DB\u05DC\u05D4 \u05DC\u05D4\u05DB" +
+            "\u05D9\u05DC \u05DB\u05DE\u05D5\u05EA \u05EA\u05D5\u05D5\u05D9\u05DD \u05DE\u05E1\u05E4\u05E7\u05EA. \u05DC\u05D3" +
+            "\u05D5\u05D2\u05DE\u05D0: \u05E8\u05E7 \u05DC\u05D0\u05D9\u05D7\u05D5\u05D3 \u05D4\u05D0\u05D9\u05E8\u05D5\u05E4" +
+            "\u05D0\u05D9 \u05E0\u05D3\u05E8\u05E9\u05D9\u05DD \u05DB\u05DE\u05D4 \u05E1\u05D5\u05D2\u05D9 \u05E7\u05D9\u05D3" +
+            "\u05D5\u05D3\u05D9\u05DD \u05E9\u05D5\u05E0\u05D9\u05DD \u05E2\u05DC \u05DE\u05E0\u05EA \u05DC\u05DB\u05E1\u05D5" +
+            "\u05EA \u05D0\u05EA \u05DB\u05DC \u05D4\u05E9\u05E4\u05D5\u05EA \u05D4\u05DE\u05D3\u05D5\u05D1\u05E8\u05D5\u05EA " +
+            "\u05D1\u05D5. \u05D9\u05EA\u05D9\u05E8\u05D4 \u05DE\u05D6\u05D0\u05EA \u05D0\u05E3 \u05DC\u05E9\u05E4\u05D4 " +
+            "\u05D1\u05D5\u05D3\u05D3\u05EA, \u05DB\u05DE\u05D5 \u05D0\u05E0\u05D2\u05DC\u05D9\u05EA \u05DC\u05DE\u05E9\u05DC," +
+            " \u05DC\u05D0 \u05D4\u05D9\u05D4 \u05D3\u05D9 \u05D1\u05DE\u05E2\u05E8\u05DB\u05EA \u05E7\u05D9\u05D3\u05D5\u05D3" +
+            " \u05D0\u05D7\u05EA \u05D1\u05E2\u05D1\u05D5\u05E8 \u05DB\u05DC \u05D4\u05D0\u05D5\u05EA\u05D9\u05D5\u05EA, \u05E1" +
+            "\u05D9\u05DE\u05E0\u05D9 \u05D4\u05E4\u05D9\u05E1\u05D5\u05E7 \u05D5\u05D4\u05E1\u05DE\u05DC\u05D9\u05DD \u05D4" +
+            "\u05D8\u05DB\u05E0\u05D9\u05D9\u05DD \u05E9\u05D1\u05E9\u05D9\u05DE\u05D5\u05E9 \u05E9\u05D5\u05D8\u05E3.\n\n\u05DE" +
+            "\u05E2\u05E8\u05DB\u05D5\u05EA \u05E7\u05D9\u05D3\u05D5\u05D3 \u05D0\u05DC\u05D5 \u05D0\u05E3 \u05E1\u05D5\u05EA" +
+            "\u05E8\u05D5\u05EA \u05D6\u05D5 \u05D0\u05EA \u05D6\u05D5. \u05DB\u05DC\u05D5\u05DE\u05E8, \u05E9\u05E0\u05D9 " +
+            "\u05E7\u05D9\u05D3\u05D5\u05D3\u05D9\u05DD \u05D9\u05DB\u05D5\u05DC\u05D9\u05DD \u05DC\u05D4\u05E9\u05EA\u05DE" +
+            "\u05E9 \u05D1\u05D0\u05D5\u05EA\u05D5 \u05DE\u05E1\u05E4\u05E8 \u05DC\u05E9\u05E0\u05D9 \u05EA\u05D5\u05D9\u05DD" +
+            " \u05E0\u05D1\u05D3\u05DC\u05D9\u05DD, \u05D0\u05D5 \u05DC\u05D4\u05E9\u05EA\u05DE\u05E9 \u05D1\u05DE\u05E1\u05E4" +
+            "\u05E8\u05D9\u05DD \u05E9\u05D5\u05E0\u05D9\u05DD \u05DC\u05D0\u05D5\u05EA\u05D5 \u05EA\u05D5. \u05E2\u05DC " +
+            "\u05DB\u05DC \u05DE\u05D7\u05E9\u05D1 (\u05D5\u05D1\u05DE\u05D9\u05D5\u05D7\u05D3 \u05E9\u05E8\u05EA\u05D9\u05DD)" +
+            " \u05DC\u05EA\u05DE\u05D5\u05DA \u05D1\u05DE\u05E1\u05E4\u05E8 \u05E8\u05D1 \u05E9\u05DC \u05DE\u05E2\u05E8\u05DB" +
+            "\u05D5\u05EA \u05E7\u05D9\u05D3\u05D5\u05D3 \u05E9\u05D5\u05E0\u05D5\u05EA; \u05D0\u05D5\u05DC\u05DD \u05DB\u05DC" +
+            " \u05D0\u05D9\u05DE\u05EA \u05E9\u05E0\u05EA\u05D5\u05E0\u05D9\u05DD \u05E2\u05D5\u05D1\u05E8\u05D9\u05DD \u05D1" +
+            "\u05D9\u05DF \u05DE\u05E2\u05E8\u05DB\u05D5\u05EA \u05E7\u05D9\u05D3\u05D5\u05D3 \u05D0\u05D5 \u05E4\u05DC\u05D8" +
+            "\u05E4\u05D5\u05E8\u05DE\u05D5\u05EA \u05E9\u05D5\u05E0\u05D5\u05EA \u05E7\u05D9\u05D9\u05DD \u05D4\u05E1\u05D9" +
+            "\u05DB\u05D5\u05DF \u05E9\u05D9\u05D9\u05E4\u05D2\u05DE\u05D5.\n\u05D9\u05D5\u05E0\u05D9\u05E7\u05D5\u05D3 " +
+            "\u05DE\u05E9\u05E0\u05D4 \u05D0\u05EA \u05DB\u05DC \u05D6\u05D4!\n\n\u05D9\u05D5\u05E0\u05D9\u05E7\u05D5\u05D3 " +
+            "\u05DE\u05E7\u05E6\u05D4 \u05DE\u05E1\u05E4\u05E8 \u05D9\u05D9\u05D7\u05D5\u05D3\u05D9 \u05DC\u05DB\u05DC " +
+            "\u05EA\u05D5, \u05DC\u05DC\u05D0 \u05EA\u05DC\u05D5\u05EA \u05D1\u05E4\u05DC\u05D8\u05E4\u05D5\u05E8\u05DE\u05D4," +
+            " \u05D1\u05EA\u05D5\u05DB\u05E0\u05D9\u05EA, \u05D0\u05D5 \u05D1\u05E9\u05E4\u05D4.\u05EA\u05E7\u05DF " +
+            "\u05D4\u05D9\u05D5\u05E0\u05D9\u05E7\u05D5\u05D3 \u05D0\u05D5\u05DE\u05E5 \u05E2\u05DC-\u05D9\u05D3\u05D9 " +
+            "\u05D4\u05DE\u05D5\u05D1\u05D9\u05DC\u05D9\u05DD \u05D1\u05EA\u05E2\u05E9\u05D9\u05D9\u05D4 \u05DB\u05DE\u05D5 " +
+            "Apple\u200F, HP\u200F, IBM\u200F, JustSystem\u200F, Microsoft\u200F, Oracle\u200F, SAP\u200F, Sun\u200F, Sybase" +
+            "\u200F, Unisys\u200F \u05D5\u05E8\u05D1\u05D9\u05DD \u05D0\u05D7\u05E8\u05D9\u05DD. \u05D9\u05D5\u05E0\u05D9\u05E7" +
+            "\u05D5\u05D3 \u05E0\u05D3\u05E8\u05E9 \u05E2\u05DC-\u05D9\u05D3\u05D9 \u05EA\u05E7\u05E0\u05D9\u05DD \u05DE\u05D5" +
+            "\u05D3\u05E8\u05E0\u05D9\u05D9\u05DD \u05DB\u05DE\u05D5 XML\u200F, Java\u200F, ECMAScript (JavaScript)\u200E\u200F, " +
+            "LDAP\u200F, CORBA 3.0\u200E\u200F, WML\u200F \u05D5\u05DB\u05D3\u05D5\u05DE\u05D4, \u05D5\u05DE\u05D4\u05D5\u05D5\u05D4 " +
+            "\u05DC\u05DE\u05E2\u05E9\u05D4 \u05D0\u05EA \u05D4\u05D9\u05D9\u05E9\u05D5\u05DD \u05D4\u05E8\u05E9\u05DE\u05D9 " +
+            "\u05E9\u05DC \u05EA\u05E7\u05DF ISO/IEC 10646. \u05D4\u05D5\u05D0 \u05E0\u05EA\u05DE\u05DA \u05E2\u05DC " +
+            "\u05D9\u05D3\u05D9 \u05DE\u05E2\u05E8\u05DB\u05D5\u05EA \u05D4\u05E4\u05E2\u05DC\u05D4 \u05E8\u05D1\u05D5\u05EA, " +
+            "\u05DB\u05DC \u05D4\u05D3\u05E4\u05D3\u05E4\u05E0\u05D9\u05DD \u05D4\u05D7\u05D3\u05D9\u05E9\u05D9\u05DD, " +
+            "\u05D5\u05DE\u05D5\u05E6\u05E8\u05D9\u05DD \u05E8\u05D1\u05D9\u05DD \u05D0\u05D7\u05E8\u05D9\u05DD. " +
+            "\u05D4\u05D5\u05E4\u05E2\u05EA \u05EA\u05E7\u05DF \u05D4\u05D9\u05D5\u05E0\u05D9\u05E7\u05D5\u05D3 " +
+            "\u05D5\u05D6\u05DE\u05D9\u05E0\u05D5\u05EA \u05D4\u05DB\u05DC\u05D9\u05DD \u05D4\u05EA\u05D5\u05DE\u05DB" +
+            "\u05D9\u05DD \u05D1\u05D5 \u05E0\u05DE\u05E0\u05D5\u05EA \u05E2\u05DD \u05D4\u05DE\u05D2\u05DE\u05D5\u05EA" +
+            " \u05D4\u05DB\u05DC\u05DC-\u05E2\u05D5\u05DC\u05DE\u05D9\u05D5\u05EA \u05D4\u05D7\u05E9\u05D5\u05D1\u05D5\u05EA" +
+            " \u05D1\u05D9\u05D5\u05EA\u05E8, \u05D0\u05E9\u05E8 \u05DE\u05E1\u05EA\u05DE\u05E0\u05D5\u05EA \u05DC\u05D0" +
+            "\u05D7\u05E8\u05D5\u05E0\u05D4 \u05D1\u05D8\u05DB\u05E0\u05D5\u05DC\u05D5\u05D2\u05D9\u05D9\u05EA \u05D4" +
+            "\u05EA\u05D5\u05DB\u05E0\u05D4.\n\n\u05E9\u05D9\u05DC\u05D5\u05D1 \u05D9\u05D5\u05E0\u05D9\u05E7\u05D5\u05D3" +
+            " \u05D1\u05D9\u05D9\u05E9\u05D5\u05DE\u05D9 \u05E9\u05E8\u05EA-\u05DC\u05E7\u05D5\u05D7 \u05D0\u05D5 \u05D1" +
+            "\u05D9\u05D9\u05E9\u05D5\u05DE\u05D9\u05DD \u05E8\u05D1\u05D9-\u05E9\u05DB\u05D1\u05D5\u05EA \u05D5\u05D1\u05D0" +
+            "\u05EA\u05E8\u05D9 \u05D0\u05D9\u05E0\u05D8\u05E8\u05E0\u05D8 \u05DE\u05D0\u05E4\u05E9\u05E8 \u05D7\u05D9\u05E1" +
+            "\u05DB\u05D5\u05DF \u05E0\u05D9\u05DB\u05E8 \u05D1\u05E2\u05DC\u05D5\u05D9\u05D5\u05EA \u05DC\u05E2\u05D5\u05DE" +
+            "\u05EA \u05D4\u05E9\u05D9\u05DE\u05D5\u05E9 \u05D1\u05E1\u05D3\u05E8\u05D5\u05EA \u05D4\u05EA\u05D5\u05D5\u05D9" +
+            "\u05DD \u05D4\u05DE\u05E1\u05D5\u05E8\u05EA\u05D9\u05D5\u05EA. \u05D4\u05D5\u05D3\u05D5\u05EA \u05DC\u05D9\u05D5" +
+            "\u05E0\u05D9\u05E7\u05D5\u05D3, \u05DE\u05D5\u05E6\u05E8 \u05EA\u05D5\u05DB\u05E0\u05D4 \u05D0\u05D7\u05D3 \u05D0" +
+            "\u05D5 \u05D0\u05EA\u05E8 \u05D9\u05D7\u05D9\u05D3 \u05D1\u05E8\u05E9\u05EA \u05D9\u05DB\u05D5\u05DC \u05DC\u05D4" +
+            "\u05E8\u05D7\u05D9\u05D1 \u05D0\u05EA \u05D9\u05E2\u05D3\u05D9\u05D5 \u05DC\u05DE\u05D2\u05D5\u05D5\u05DF \u05E4" +
+            "\u05DC\u05D8\u05E4\u05D5\u05E8\u05DE\u05D5\u05EA, \u05D0\u05E8\u05E6\u05D5\u05EA \u05D5\u05E9\u05E4\u05D5\u05EA " +
+            "\u05DC\u05DC\u05D0 \u05E6\u05D5\u05E8\u05DA \u05D1\u05E9\u05D9\u05E0\u05D5\u05D9\u05D9\u05DD \u05DE\u05E8\u05D7" +
+            "\u05D9\u05E7\u05D9\u05DD. \u05D9\u05D5\u05E0\u05D9\u05E7\u05D5\u05D3 \u05DE\u05D0\u05E4\u05E9\u05E8 \u05DE\u05E2" +
+            "\u05D1\u05E8 \u05E0\u05EA\u05D5\u05E0\u05D9\u05DD \u05D3\u05E8\u05DA \u05DE\u05E2\u05E8\u05DB\u05D5\u05EA \u05E8" +
+            "\u05D1\u05D5\u05EA \u05D5\u05E9\u05D5\u05E0\u05D5\u05EA \u05DE\u05D1\u05DC\u05D9 \u05E9\u05D9\u05D9\u05E4\u05D2" +
+            "\u05DE\u05D5.\n\u05E4\u05E8\u05D8\u05D9\u05DD \u05D0\u05D5\u05D3\u05D5\u05EA \u05D4\u05E7\u05D5\u05E0\u05E1\u05D5" +
+            "\u05E8\u05E6\u05D9\u05D5\u05DD \u05E9\u05DC \u05D9\u05D5\u05E0\u05D9\u05E7\u05D5\u05D3 (Unicode Consortium",
+            "Hva\u00F0 er Unicode?\n\nUnicode sta\u00F0allinn \u00FAthlutar hverju skrift\u00E1kni t\u00F6lu,\nsem er \u00F3h\u00E1" +
+            "\u00F0 t\u00F6lvuger\u00F0,\nsem er \u00F3h\u00E1\u00F0 forriti,\nsem er \u00F3h\u00E1\u00F0 tungum\u00E1li.\n\nT" +
+            "\u00F6lvur geta \u00ED e\u00F0li s\u00EDnu a\u00F0eins unni\u00F0 me\u00F0 t\u00F6lur. \u00DE\u00E6r geyma b" +
+            "\u00F3kstafi og \u00F6nnur skrift\u00E1kn me\u00F0 \u00FEv\u00ED a\u00F0 \u00FAthluta \u00FEeim t\u00F6lu. " +
+            "\u00C1\u00F0ur en Unicode kom til voru hundru\u00F0 mismunandi t\u00FAlkunarkerfa sem \u00FAthlutu\u00F0u " +
+            "\u00FEessum t\u00F6lum. Ekkert eitt t\u00FAlkunarkerfi gat innihaldi\u00F0 n\u00E6gilegan fj\u00F6lda skrift" +
+            "\u00E1kna; t.d. \u00FEarfnast Evr\u00F3pusambandi\u00F0 nokkurra mismunandi kerfa til a\u00F0 spanna \u00F6ll " +
+            "tungum\u00E1l \u00FEess. Jafnvel fyrir eitt tungum\u00E1l, eins og ensku, var eitt t\u00FAlkunarkerfi ekki n" +
+            "\u00F3g fyrir alla b\u00F3kstafi, greinarmerki og algengustu einingat\u00E1kn.\n\nT\u00FAlkunarkerfin hafa einnig" +
+            " veri\u00F0 \u00ED andst\u00F6\u00F0u hvert vi\u00F0 anna\u00F0, \u00FE.e. tv\u00F6 kerfi geta nota\u00F0 s\u00F6mu" +
+            " t\u00F6lu fyrir tv\u00F6 \u00F3l\u00EDk skrift\u00E1kn e\u00F0a nota\u00F0 tv\u00E6r mismunandi t\u00F6lur fyrir" +
+            " sama t\u00E1kni\u00F0. S\u00E9rhver t\u00F6lva \u00FEarf(s\u00E9rstaklega mi\u00F0larar) a\u00F0 sty\u00F0ja margs" +
+            " konar t\u00FAlkanir \u00E1 st\u00F6fum; engu a\u00F0 s\u00ED\u00F0ur er alltaf h\u00E6tta \u00E1 stafabrenglun " +
+            "\u00FEegar g\u00F6gn fara \u00E1 milli t\u00F6lva og \u00E1 milli mismunandi t\u00FAlkunarkerfa.\nUnicode breytir" +
+            " \u00FEessu \u00F6llu!\n\nUnicode gefur hverju skrift\u00E1kni eigin t\u00F6lu sem breytist ekki eftir t\u00F6lvuger" +
+            "\u00F0, forriti e\u00F0a tungum\u00E1li. Unicode sta\u00F0allinn hefur veri\u00F0 tekinn upp af fork\u00F3lfum t" +
+            "\u00F6lvui\u00F0na\u00F0arins; Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys og m" +
+            "\u00F6rgum \u00F6\u00F0rum. Unicode er nota\u00F0 af n\u00FAt\u00EDmast\u00F6\u00F0lum eins og XML, Java, " +
+            "ECMAScript (JavaScript), LDAP, CORBA 3.0, WML, o.s.frv. og er hin opinbera lei\u00F0 til a\u00F0 \u00FAtf" +
+            "\u00E6ra ISO/IEC 10646. Unicode sta\u00F0allinn er studdur af m\u00F6rgum st\u00FDrikerfum, \u00F6llum n" +
+            "\u00FAt\u00EDmav\u00F6frum og m\u00F6rgum \u00F6\u00F0rum b\u00FAna\u00F0i. Tilkoma Unicode sta\u00F0alsins" +
+            " og b\u00FAna\u00F0ar til a\u00F0 sty\u00F0ja hann eru veigamikil skref \u00ED \u00FEr\u00F3un hnattr\u00E6nnar" +
+            " t\u00E6kni.\n\nA\u00F0 nota Unicode \u00ED notendami\u00F0lurum e\u00F0a \u00ED forritum og vefs\u00ED" +
+            "\u00F0um me\u00F0 m\u00F6rgum notendavi\u00F0m\u00F3tum b\u00FD\u00F0ur upp \u00E1 umtalsver\u00F0an " +
+            "sparna\u00F0, \u00ED samanbur\u00F0i vi\u00F0 a\u00F0 nota eldri stafat\u00F6flur. Unicode leyfir einum " +
+            "forritapakka e\u00F0a einni vefsl\u00F3\u00F0 a\u00F0 n\u00E1 til margra t\u00F6lvuger\u00F0a, tungum" +
+            "\u00E1la og landa \u00E1n endurh\u00F6nnunar. Unicode gerir g\u00F6gnum kleift a\u00F0 fer\u00F0ast gegnum " +
+            "m\u00F6rg mismunandi kerfi \u00E1n brenglunar.\nUm Unicode samt\u00F6kin (Consortium)\n\nUnicode Consortium " +
+            "samt\u00F6kin stefna ekki a\u00F0 hagna\u00F0i. \u00DEau voru stofnu\u00F0 til a\u00F0 \u00FEr\u00F3a, \u00FA" +
+            "tv\u00EDkka og koma \u00E1 framf\u00E6ri Unicode sta\u00F0linum, sem skilgreinir framsetningu \u00E1 texta " +
+            "\u00ED n\u00FAt\u00EDmaforritap\u00F6kkum og st\u00F6\u00F0lum. Me\u00F0limir samtakanna eru fulltr\u00FAar " +
+            "margs konar fyrirt\u00E6kja og stofnana \u00ED t\u00F6lvu- og uppl\u00FDsingai\u00F0na\u00F0inum. Samt\u00F6kin" +
+            " hafa eing\u00F6ngu tekjur af a\u00F0ildargj\u00F6ldum s\u00EDnum. Fyrirt\u00E6ki, stofnanir og einstaklingar " +
+            "hvar sem er \u00ED heiminum sem \u00F3"
+            };
+}
diff --git a/main/tests/collate/.classpath b/main/tests/collate/.classpath
new file mode 100644
index 0000000..89422f4
--- /dev/null
+++ b/main/tests/collate/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry excluding="**/.svn/" kind="src" path="src"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-collate"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-core"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-test-framework"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="output" path="out/bin"/>
+</classpath>
diff --git a/main/tests/collate/.externalToolBuilders/copy-collate-test-data.launch b/main/tests/collate/.externalToolBuilders/copy-collate-test-data.launch
new file mode 100644
index 0000000..02fc402
--- /dev/null
+++ b/main/tests/collate/.externalToolBuilders/copy-collate-test-data.launch
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_AFTER_CLEAN_TARGETS" value="copy-collate-test-data,"/>
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_MANUAL_TARGETS" value="copy-collate-test-data,"/>
+<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-collate-tests/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-collate-tests"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.running" value="true"/>
+<mapEntry key="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-collate-tests/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"/>
+</launchConfiguration>
diff --git a/main/tests/collate/.project b/main/tests/collate/.project
new file mode 100644
index 0000000..6ed9958
--- /dev/null
+++ b/main/tests/collate/.project
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>icu4j-collate-tests</name>
+	<comment></comment>
+	<projects>
+		<project>icu4j-collate</project>
+		<project>icu4j-core</project>
+		<project>icu4j-shared</project>
+		<project>icu4j-test-framework</project>
+	</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/copy-collate-test-data.launch</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/main/tests/collate/.settings/org.eclipse.jdt.core.prefs b/main/tests/collate/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..91c4068
--- /dev/null
+++ b/main/tests/collate/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,332 @@
+#Wed Jul 08 12:24:33 EDT 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+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.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=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=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+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=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+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=ignore
+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.redundantSuperinterface=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.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+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.unusedParameterIncludeDocCommentReference=enabled
+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.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
+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=120
+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_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not 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.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+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=120
+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/main/tests/collate/.settings/org.eclipse.jdt.ui.prefs b/main/tests/collate/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..a799eb0
--- /dev/null
+++ b/main/tests/collate/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,10 @@
+#Wed Jul 08 12:22:42 EDT 2009
+eclipse.preferences.version=1
+formatter_profile=_ICU4J Standard
+formatter_settings_version=11
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+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/main/tests/collate/build.properties b/main/tests/collate/build.properties
new file mode 100644
index 0000000..3dc6ef5
--- /dev/null
+++ b/main/tests/collate/build.properties
@@ -0,0 +1,5 @@
+#*******************************************************************************
+#* Copyright (C) 2009, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+shared.dir = ../../shared
diff --git a/main/tests/collate/build.xml b/main/tests/collate/build.xml
new file mode 100644
index 0000000..f0021e0
--- /dev/null
+++ b/main/tests/collate/build.xml
@@ -0,0 +1,43 @@
+<!--
+*******************************************************************************
+* Copyright (C) 2009, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+-->
+<project name="collate-tests" default="build" basedir=".">
+    <property file="build-local.properties"/>
+    <property file="build.properties"/>
+    <import file="${shared.dir}/build/common-targets.xml"/>
+
+    <path id="javac.classpathref">
+        <path refid="javac.classpathref.${ant.project.name}"/>
+    </path>
+    <property name="jar.file" value="${icu4j.collate-tests.jar}"/>
+
+    <target name="build" depends="compile, copy, jar" description="Build the project"/>
+
+    <target name="build-all" depends="@build-all" description="Build the project including all dependencies"/>
+
+    <target name="clean" depends="@clean" description="Clean up the build outputs"/>
+
+    <target name="compile" depends="@compile" description="Compile java source files"/>
+
+    <target name="copy" depends="@copy, copy-collate-test-data" description="Copy non-java runtime files to the project's binary directory"/>
+
+    <target name="jar" depends="compile, copy, @jar" description="Create the project's jar file"/>
+
+    <target name="copy-collate-test-data" description="Extract pre-built ICU collation test data files and copy them to the project's binary directory">
+        <unjar src="${icu4j.testdata.jar}" dest="${bin.dir}">
+            <patternset>
+                <include name="**/DataDrivenCollationTest.res"/>
+            </patternset>
+        </unjar>
+        <copy todir="${bin.dir}">
+            <fileset dir="${icu4j.collate-tests.dir}/src">
+                <include name="com/ibm/icu/dev/data/riwords.txt"/>
+                <include name="com/ibm/icu/dev/data/CollationTest_*.txt"/>
+                <include name="com/ibm/icu/dev/data/resources/*"/>
+            </fileset>
+        </copy>
+    </target>
+</project>
diff --git a/main/tests/collate/collate-tests-build.launch b/main/tests/collate/collate-tests-build.launch
new file mode 100644
index 0000000..a366f0f
--- /dev/null
+++ b/main/tests/collate/collate-tests-build.launch
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j-collate-tests/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j-core-tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.running" value="true"/>
+<mapEntry key="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-collate-tests/build.xml}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/main/tests/collate/manifest.stub b/main/tests/collate/manifest.stub
new file mode 100644
index 0000000..5b0858d
--- /dev/null
+++ b/main/tests/collate/manifest.stub
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+
+Name: com/ibm/icu/dev/test
+Specification-Title: ICU for Java Collation Tests
+Specification-Version: @SPECVERSION@
+Specification-Vendor: ICU
+Implementation-Title: ICU for Java Collation Tests
+Implementation-Version: @IMPLVERSION@
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: @COPYRIGHT@
diff --git a/main/tests/collate/src/com/ibm/icu/dev/data/CollationTest_NON_IGNORABLE_STUB.txt b/main/tests/collate/src/com/ibm/icu/dev/data/CollationTest_NON_IGNORABLE_STUB.txt
new file mode 100644
index 0000000..3c70444
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/data/CollationTest_SHIFTED_STUB.txt b/main/tests/collate/src/com/ibm/icu/dev/data/CollationTest_SHIFTED_STUB.txt
new file mode 100644
index 0000000..9ca911e
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/data/riwords.txt b/main/tests/collate/src/com/ibm/icu/dev/data/riwords.txt
new file mode 100644
index 0000000..67dab27
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/test/TestAllCollate.java b/main/tests/collate/src/com/ibm/icu/dev/test/TestAllCollate.java
new file mode 100644
index 0000000..d60b79a
--- /dev/null
+++ b/main/tests/collate/src/com/ibm/icu/dev/test/TestAllCollate.java
@@ -0,0 +1,35 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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 TestAllCollate extends TestGroup {
+
+    public static void main(String[] args) {
+        new TestAllCollate().run(args);
+    }
+
+    public TestAllCollate() {
+        super(
+              new String[] {
+                  "com.ibm.icu.dev.test.collator.TestAll",
+                  "com.ibm.icu.dev.test.format.GlobalizationPreferencesTest",
+                  "com.ibm.icu.dev.test.format.RbnfLenientScannerTest",
+                  "com.ibm.icu.dev.test.search.SearchTest",
+                  "com.ibm.icu.dev.test.util.ICUResourceBundleCollationTest",
+                  "com.ibm.icu.dev.test.util.LocaleAliasCollationTest",
+                  "com.ibm.icu.dev.test.util.ULocaleCollationTest",
+              },
+              "All tests in ICU collation");
+    }
+
+    public static final String CLASS_TARGET_NAME  = "Collate";
+}
diff --git a/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationAPITest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationAPITest.java
new file mode 100644
index 0000000..8820c6c
--- /dev/null
+++ b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationAPITest.java
@@ -0,0 +1,1316 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.Set;
+
+import com.ibm.icu.dev.test.TestFmwk;
+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.UCharacterIterator;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.Collator.CollatorFactory;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.VersionInfo;
+
+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);
+        doAssert((sortk1.compareTo(sortk2)) > 0, "Result should be \"Abcda\" >>> \"abcda\"");
+
+        CollationKey sortkNew;
+        sortkNew = sortk1;
+        doAssert(!(sortk1.equals(sortk2)), "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");
+
+        // 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 ....");
+        
+        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.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.equals(test1, test2) ), "Result should be \"Abcda\" == \"abcda\"");
+        doAssert((col.compare(test1, test2) == 0 ), "Result should be \"Abcda\" == \"abcda\"");
+        logln("The compare tests end.");
+    }
+    
+    /**
+    * 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());
+    }
+    
+    /*
+     * Tests the method public void setStrength(int newStrength)
+     */
+    public void TestSetStrength() {
+        // Tests when if ((newStrength != PRIMARY) && ... ) is true
+        int[] cases = { -1, 4, 5 };
+        for (int i = 0; i < cases.length; i++) {
+            try {
+                // Assuming -1 is not one of the values
+                Collator c = Collator.getInstance();
+                c.setStrength(cases[i]);
+                errln("Collator.setStrength(int) is suppose to return "
+                        + "an exception for an invalid newStrength value of " + cases[i]);
+            } catch (Exception e) {
+            }
+        }
+    }
+
+    /*
+     * Tests the method public void setDecomposition(int decomposition)
+     */
+    public void TestSetDecomposition() {
+        // Tests when if ((decomposition != NO_DECOMPOSITION) && ...) is true
+        int[] cases = { 0, 1, 14, 15, 18, 19 };
+        for (int i = 0; i < cases.length; i++) {
+            try {
+                // Assuming -1 is not one of the values
+                Collator c = Collator.getInstance();
+                c.setDecomposition(cases[i]);
+                errln("Collator.setDecomposition(int) is suppose to return "
+                        + "an exception for an invalid decomposition value of " + cases[i]);
+            } catch (Exception e) {
+            }
+        }
+    }
+    
+    /*
+     * Tests the class CollatorFactory
+     */
+    public void TestCreateCollator() {
+        // The following class override public Collator createCollator(Locale loc)
+        class TestCreateCollator extends CollatorFactory {
+            public Set<String> getSupportedLocaleIDs() {
+                return new HashSet<String>();
+            }
+
+            public TestCreateCollator() {
+                super();
+            }
+
+            public Collator createCollator(ULocale c) {
+                return null;
+            }
+        }
+        // The following class override public Collator createCollator(ULocale loc)
+        class TestCreateCollator1 extends CollatorFactory {
+            public Set<String> getSupportedLocaleIDs() {
+                return new HashSet<String>();
+            }
+
+            public TestCreateCollator1() {
+                super();
+            }
+
+            public Collator createCollator(Locale c) {
+                return null;
+            }
+            public boolean visible(){
+                return false;
+            }
+        }
+
+        /*
+         * Tests the method public Collator createCollator(Locale loc) using TestCreateCollator1 class
+         */
+        try {
+            TestCreateCollator tcc = new TestCreateCollator();
+            tcc.createCollator(new Locale("en_US"));
+        } catch (Exception e) {
+            errln("Collator.createCollator(Locale) was not suppose to " + "return an exception.");
+        }
+
+        /*
+         * Tests the method public Collator createCollator(ULocale loc) using TestCreateCollator1 class
+         */
+        try {
+            TestCreateCollator1 tcc = new TestCreateCollator1();
+            tcc.createCollator(new ULocale("en_US"));
+        } catch (Exception e) {
+            errln("Collator.createCollator(ULocale) was not suppose to " + "return an exception.");
+        }
+        
+        /*
+         * Tests the method gpublic String getDisplayName(Locale objectLocale, Locale displayLocale) using TestCreateCollator1 class
+         */
+        try {
+            TestCreateCollator tcc = new TestCreateCollator();
+            tcc.getDisplayName(new Locale("en_US"), new Locale("jp_JP"));
+        } catch (Exception e) {
+            errln("Collator.getDisplayName(Locale,Locale) was not suppose to return an exception.");
+        }
+        
+        /*
+         * Tests the method public String getDisplayName(ULocale objectLocale, ULocale displayLocale) using TestCreateCollator1 class
+         */
+        try {
+            TestCreateCollator1 tcc = new TestCreateCollator1();
+            tcc.getDisplayName(new ULocale("en_US"), new ULocale("jp_JP"));
+        } catch (Exception e) {
+            errln("Collator.getDisplayName(ULocale,ULocale) was not suppose to return an exception.");
+        }
+    }
+    /* Tests the method
+     * public static final String[] getKeywordValues(String keyword)
+     */
+    @SuppressWarnings("static-access")
+    public void TestGetKeywordValues(){
+        // Tests when "if (!keyword.equals(KEYWORDS[0]))" is true
+        String[] cases = {"","dummy"};
+        for(int i=0; i<cases.length; i++){
+            try{
+                Collator c = Collator.getInstance();
+                @SuppressWarnings("unused")
+                String[] s = c.getKeywordValues(cases[i]);
+                errln("Collator.getKeywordValues(String) is suppose to return " +
+                        "an exception for an invalid keyword.");
+            } catch(Exception e){}
+        }
+    }
+}
diff --git a/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationChineseTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationChineseTest.java
new file mode 100644
index 0000000..bf7bd16
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationCreationMethodTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationCreationMethodTest.java
new file mode 100644
index 0000000..8015532
--- /dev/null
+++ b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationCreationMethodTest.java
@@ -0,0 +1,120 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationCurrencyTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationCurrencyTest.java
new file mode 100644
index 0000000..e66a01a
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationDummyTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationDummyTest.java
new file mode 100644
index 0000000..13e67cd
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationEnglishTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationEnglishTest.java
new file mode 100644
index 0000000..d1732ba
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationFinnishTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationFinnishTest.java
new file mode 100644
index 0000000..1d797f8
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationFrenchTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationFrenchTest.java
new file mode 100644
index 0000000..11f3acc
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationGermanTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationGermanTest.java
new file mode 100644
index 0000000..b61671f
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationIteratorTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationIteratorTest.java
new file mode 100644
index 0000000..dfb1027
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationKanaTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationKanaTest.java
new file mode 100644
index 0000000..3067239
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationMiscTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationMiscTest.java
new file mode 100644
index 0000000..868ab55
--- /dev/null
+++ b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationMiscTest.java
@@ -0,0 +1,2599 @@
+ /*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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.RawCollationKey;
+import com.ibm.icu.text.RuleBasedCollator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.CollationKey.BoundMode;
+
+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));
+            }
+        }   
+    }
+    
+    /*
+     * Tests the method public boolean equals(Object target) in CollationKey
+     */
+    public void TestCollationKeyEquals() {
+        CollationKey ck = new CollationKey("", (byte[]) null);
+
+        // Tests when "if (!(target instanceof CollationKey))" is true
+        if (ck.equals(new Object())) {
+            errln("CollationKey.equals() was not suppose to return false "
+                    + "since it is comparing to a non Collation Key object.");
+        }
+        if (ck.equals("")) {
+            errln("CollationKey.equals() was not suppose to return false "
+                    + "since it is comparing to a non Collation Key object.");
+        }
+        if (ck.equals(0)) {
+            errln("CollationKey.equals() was not suppose to return false "
+                    + "since it is comparing to a non Collation Key object.");
+        }
+        if (ck.equals(0.0)) {
+            errln("CollationKey.equals() was not suppose to return false "
+                    + "since it is comparing to a non Collation Key object.");
+        }
+
+        // Tests when "if (target == null)" is true
+        if (ck.equals((CollationKey) null)) {
+            errln("CollationKey.equals() was not suppose to return false "
+                    + "since it is comparing to a null Collation Key object.");
+        }
+    }
+
+    /*
+     * Tests the method public int hashCode() in CollationKey
+     */
+    public void TestCollationKeyHashCode() {
+        CollationKey ck = new CollationKey("", (byte[]) null);
+
+        // Tests when "if (m_key_ == null)" is true
+        if (ck.hashCode() != 1) {
+            errln("CollationKey.hashCode() was suppose to return 1 "
+                    + "when m_key is null due a null parameter in the " + "constructor.");
+        }
+    }
+
+    /*
+     * Tests the method public CollationKey getBound(int boundType, int noOfLevels)
+     */
+    public void TestGetBound() {
+        CollationKey ck = new CollationKey("", (byte[]) null);
+
+        // Tests when "if (noOfLevels > Collator.PRIMARY)" is false
+        // Tests when "default: " is true for "switch (boundType)"
+        try {
+            ck.getBound(BoundMode.COUNT, -1);
+            errln("CollationKey.getBound(int,int) was suppose to return an "
+                    + "exception for an invalid boundType value.");
+        } catch (Exception e) {
+        }
+
+        // Tests when "if (noOfLevels > 0)"
+        byte b[] = {};
+        CollationKey ck1 = new CollationKey("", b);
+        try {
+            ck1.getBound(0, 1);
+            errln("CollationKey.getBound(int,int) was suppose to return an "
+                    + "exception a value of noOfLevels that exceeds expected.");
+        } catch (Exception e) {
+        }
+    }
+
+    /*
+     * Tests the method public CollationKey merge(CollationKey source)
+     */
+    public void TestMerge() {
+        byte b[] = {};
+        CollationKey ck = new CollationKey("", b);
+
+        // Tests when "if (source == null || source.getLength() == 0)" is true
+        try {
+            ck.merge(null);
+            errln("Collationkey.merge(CollationKey) was suppose to return " + "an exception for a null parameter.");
+        } catch (Exception e) {
+        }
+        try {
+            ck.merge(ck);
+            errln("Collationkey.merge(CollationKey) was suppose to return " + "an exception for a null parameter.");
+        } catch (Exception e) {
+        }
+    }
+    
+    /* Test the method public int compareTo(RawCollationKey rhs) */
+    public void TestRawCollationKeyCompareTo(){
+        RawCollationKey rck = new RawCollationKey();
+        byte[] b = {(byte) 10, (byte) 20};
+        RawCollationKey rck100 = new RawCollationKey(b, 2);
+        
+        if(rck.compareTo(rck) != 0){
+            errln("RawCollatonKey.compareTo(RawCollationKey) was suppose to return 0 " +
+                    "for two idential RawCollationKey objects.");
+        }
+        
+        if(rck.compareTo(rck100) == 0){
+            errln("RawCollatonKey.compareTo(RawCollationKey) was not suppose to return 0 " +
+                    "for two different RawCollationKey objects.");
+        }
+    }
+}
+
diff --git a/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationMonkeyTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationMonkeyTest.java
new file mode 100644
index 0000000..bdaeed1
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationRegressionTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationRegressionTest.java
new file mode 100644
index 0000000..6c33194
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationServiceTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationServiceTest.java
new file mode 100644
index 0000000..ece4d10
--- /dev/null
+++ b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationServiceTest.java
@@ -0,0 +1,512 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.collator;
+
+import java.util.Arrays;
+import java.util.Collections;
+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;
+
+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(){
+        final String[][] PREFERRED = {
+            {"und",             "standard"},
+            {"en_US",           "standard"},
+            {"en_029",          "standard"},
+            {"de_DE",           "standard", "phonebook"},
+            {"de_Latn_DE",      "standard", "phonebook"},
+            {"zh",              "pinyin", "big5han", "gb2312han", "standard", "stroke", "unihan"},
+            {"zh_Hans",         "pinyin", "big5han", "gb2312han", "standard", "stroke", "unihan"},
+            {"zh_CN",           "pinyin", "big5han", "gb2312han", "standard", "stroke", "unihan"},
+            {"zh_Hant",         "stroke", "big5han", "gb2312han", "pinyin", "standard", "unihan"},
+            {"zh_TW",           "stroke", "big5han", "gb2312han", "pinyin", "standard", "unihan"},
+            {"zh__PINYIN",      "pinyin", "big5han", "gb2312han", "standard", "stroke", "unihan"},
+            {"es_ES",           "standard", "traditional"},
+            {"es__TRADITIONAL", "traditional", "standard"},
+            {"und@collation=phonebook",     "standard"},
+            {"de_DE@collation=big5han",     "standard", "phonebook"},
+            {"zzz@collation=xxx",           "standard"},
+        };
+
+        for (int i = 0; i < PREFERRED.length; i++) {
+            ULocale loc = new ULocale(PREFERRED[i][0]);
+            String[] expected = new String[PREFERRED[i].length - 1];
+            System.arraycopy(PREFERRED[i], 1, expected, 0, expected.length);
+
+            String[] pref = Collator.getKeywordValuesForLocale("collation", loc, true);
+            boolean matchPref = false;
+            if (pref.length == expected.length) {
+                matchPref = true;
+                for (int j = 0; j < pref.length; j++) {
+                    if (!pref[j].equals(expected[j])) {
+                        matchPref = false;
+                    }
+                }
+            }
+            if (!matchPref) {
+                errln("FAIL: Preferred values for locale " + loc 
+                        + " got:" + Arrays.toString(pref) + " expected:" + Arrays.toString(expected));
+            }
+ 
+            String[] all = Collator.getKeywordValuesForLocale("collation", loc, true);
+
+            // Collator.getKeywordValues return the same contents for both commonlyUsed
+            // true and false.
+            boolean matchAll = false;
+            if (pref.length == all.length) {
+                matchAll = true;
+                for (int j = 0; j < pref.length; j++) {
+                    boolean foundMatch = false;
+                    for (int k = 0; k < all.length; k++) {
+                        if (pref[j].equals(all[k])) {
+                            foundMatch = true;
+                            break;
+                        }
+                    }
+                    if (!foundMatch) {
+                        matchAll = false;
+                        break;
+                    }
+                }
+            }
+            if (!matchAll) {
+                errln("FAIL: All values for locale " + loc
+                        + " got:" + Arrays.toString(all) + " expected:" + Arrays.toString(pref));
+            }
+        }
+    }
+}
diff --git a/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationSpanishTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationSpanishTest.java
new file mode 100644
index 0000000..127a8aa
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationTest.java
new file mode 100644
index 0000000..f636399
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationThaiTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationThaiTest.java
new file mode 100644
index 0000000..8d214b5
--- /dev/null
+++ b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationThaiTest.java
@@ -0,0 +1,355 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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<String> 
+    {
+        public int compare(String string1, String 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/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationThreadTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationThreadTest.java
new file mode 100644
index 0000000..ff78c40
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationTurkishTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/CollationTurkishTest.java
new file mode 100644
index 0000000..2b8dd62
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/test/collator/G7CollationTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/G7CollationTest.java
new file mode 100644
index 0000000..f8d9768
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/test/collator/IndexCharactersTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/IndexCharactersTest.java
new file mode 100644
index 0000000..f3a4587
--- /dev/null
+++ b/main/tests/collate/src/com/ibm/icu/dev/test/collator/IndexCharactersTest.java
@@ -0,0 +1,93 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008-2009, 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);
+        }
+    }
+    
+    /* Test the method public ULocale getLocale() */
+    public void TestGetLocale(){
+        IndexCharacters ic = new IndexCharacters(new ULocale("en_US"));
+        if(!ic.getLocale().equals(new ULocale("en_US"))){
+            errln("IndexCharacter.getLocale() was suppose to return the same " +
+                    "ULocale that was passed for the object.");
+        }
+        if(ic.getLocale().equals(new ULocale("jp_JP"))){
+            errln("IndexCharacter.getLocale() was not suppose to return the same " +
+                    "ULocale that was passed for the object.");
+        }
+    }
+}
diff --git a/main/tests/collate/src/com/ibm/icu/dev/test/collator/LotusCollationKoreanTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/LotusCollationKoreanTest.java
new file mode 100644
index 0000000..3188d6e
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/test/collator/TestAll.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/TestAll.java
new file mode 100644
index 0000000..2a9aa91
--- /dev/null
+++ b/main/tests/collate/src/com/ibm/icu/dev/test/collator/TestAll.java
@@ -0,0 +1,56 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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"
+                  "IndexCharactersTest"
+              },
+              "All Collation Tests"
+              );
+    }
+
+    public static final String CLASS_TARGET_NAME = "Collator";
+}
diff --git a/main/tests/collate/src/com/ibm/icu/dev/test/collator/TestComparator.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/TestComparator.java
new file mode 100644
index 0000000..bd3f07a
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/test/collator/UCAConformanceTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/collator/UCAConformanceTest.java
new file mode 100644
index 0000000..7444df7
--- /dev/null
+++ b/main/tests/collate/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/main/tests/collate/src/com/ibm/icu/dev/test/format/GlobalizationPreferencesTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/format/GlobalizationPreferencesTest.java
new file mode 100644
index 0000000..bd97a91
--- /dev/null
+++ b/main/tests/collate/src/com/ibm/icu/dev/test/format/GlobalizationPreferencesTest.java
@@ -0,0 +1,1576 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2009, 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() {
+        // remove when we deal with the data issue
+        // System.out.println("jan 15: " + new GregorianCalendar(2010, 0, 15).getTimeInMillis());
+        if (System.currentTimeMillis() > 1263542400000L) {
+            errln("Timebomb failure: 2010/01/15");
+        } else {
+            logln("test temporarily disabled until 2010/01/05");
+            return;
+        }
+
+        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 y")) {
+            errln("FAIL: FULL date pattern is " + pattern + " Expected: EEEE, d MMMM y");
+        }
+
+        // Date - long
+        df = gp.getDateFormat(GlobalizationPreferences.DF_LONG, GlobalizationPreferences.DF_NONE);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        if (!pattern.equals("d MMMM y")) {
+            errln("FAIL: LONG date pattern is " + pattern + " Expected: d MMMM y");
+        }
+
+        // Date - medium
+        df = gp.getDateFormat(GlobalizationPreferences.DF_MEDIUM, GlobalizationPreferences.DF_NONE);
+        pattern = ((SimpleDateFormat)df).toPattern();
+        if (!pattern.equals("d MMM y")) {
+            errln("FAIL: MEDIUM date pattern is " + pattern + " Expected: d MMM y");
+        }
+
+        // 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 zzzz")) {
+            errln("FAIL: FULL time pattern is " + pattern + " Expected: HH:mm:ss zzzz");
+        }
+
+        // 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 y HH:mm:ss zzzz")) {
+            errln("FAIL: FULL date/time pattern is " + pattern + " Expected: EEEE, d MMMM y HH:mm:ss zzzz");
+        }
+
+        // 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("\u20a9\u00a0123,457")) {
+            errln("FAIL: Number string is " + numStr + " Expected: \u20a9\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/main/tests/collate/src/com/ibm/icu/dev/test/format/RbnfLenientScannerTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/format/RbnfLenientScannerTest.java
new file mode 100644
index 0000000..6ada26e
--- /dev/null
+++ b/main/tests/collate/src/com/ibm/icu/dev/test/format/RbnfLenientScannerTest.java
@@ -0,0 +1,223 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Locale;
+import java.util.Random;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.RuleBasedNumberFormat;
+import com.ibm.icu.text.RbnfLenientScannerProvider;
+import com.ibm.icu.text.RbnfScannerProviderImpl;
+import com.ibm.icu.util.ULocale;
+
+public class RbnfLenientScannerTest extends TestFmwk {
+    private static final RbnfLenientScannerProvider provider = new RbnfScannerProviderImpl();
+
+    public static void main(String[] args) {
+        try {
+          new RbnfLenientScannerTest().run(args);
+        }
+        catch (Throwable e) {
+            System.out.println("Entire test failed because of exception: "
+                               + e.toString());
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Ensure that the default provider is instantiated and used if none is set
+     * and lenient parse is on.
+     */
+    public void TestDefaultProvider() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.US,
+                                        RuleBasedNumberFormat.SPELLOUT);
+        formatter.setLenientScannerProvider(null);
+        formatter.setLenientParseMode(true);
+        String[][] lpTestData = {
+            { "2 thousand six HUNDRED   fifty-7", "2,657" },
+        };
+        doLenientParseTest(formatter, lpTestData);
+    }
+
+    /**
+     * Perform a simple spot check on the English spellout rules
+     */
+    public void TestEnglishSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.US,
+                                        RuleBasedNumberFormat.SPELLOUT);
+        formatter.setLenientScannerProvider(provider);
+        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 duration-formatting rules
+     */
+    public void TestDurations() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.US,
+                                        RuleBasedNumberFormat.DURATION);
+        formatter.setLenientScannerProvider(provider);
+        formatter.setLenientParseMode(true);
+        String[][] lpTestData = {
+            { "2-51-33", "10,293" }
+        };
+        doLenientParseTest(formatter, lpTestData);
+    }
+
+    /**
+     * Perform a simple spot check on the French spellout rules
+     */
+    public void TestFrenchSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.FRANCE,
+                                        RuleBasedNumberFormat.SPELLOUT);
+        formatter.setLenientScannerProvider(provider);
+        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 German spellout rules
+     */
+    public void TestGermanSpellout() {
+        RuleBasedNumberFormat formatter
+            = new RuleBasedNumberFormat(Locale.GERMANY,
+                                        RuleBasedNumberFormat.SPELLOUT);
+        formatter.setLenientScannerProvider(provider);
+        formatter.setLenientParseMode(true);
+        String[][] lpTestData = {
+            { "ein Tausend sechs Hundert fuenfunddreissig", "1,635" }
+        };
+        doLenientParseTest(formatter, lpTestData);
+    }
+
+    public void TestAllLocales() {
+        StringBuffer errors = null;
+        ULocale[] locales = ULocale.getAvailableLocales();
+        String[] names = {
+            " (spellout) ",
+            " (ordinal)  ",
+            " (duration) "
+        };
+        double[] numbers = {45.678, 1, 2, 10, 11, 100, 110, 200, 1000, 1111, -1111};
+        Random r = null;
+
+        // RBNF parse is extremely slow when lenient option is enabled.
+        // For non-exhaustive mode, we only test a few locales.
+        // "nl_NL", "be" had crash problem reported by #6534
+        String[] parseLocales = {"en_US", "nl_NL", "be"};
+
+        for (int i = 0; i < locales.length; ++i) {
+            ULocale loc = locales[i];
+            int count = numbers.length;
+            boolean testParse = true;
+            if (getInclusion() <= 5) {
+                testParse = false;
+                for (int k = 0; k < parseLocales.length; k++) {
+                    if (loc.toString().equals(parseLocales[k])) {
+                        testParse = true;
+                        break;
+                    }
+                }
+            } else {
+                //RBNF parse is too slow.  Increase count only for debugging purpose for now.
+                //count = 100;
+            }
+
+            for (int j = 0; j < 3; ++j) {
+                RuleBasedNumberFormat fmt = new RuleBasedNumberFormat(loc, j+1);
+
+                for (int c = 0; c < count; c++) {
+                    double n;
+                    if (c < numbers.length) {
+                        n = numbers[c];
+                    } else {
+                        if (r == null) {
+                            r = createRandom();
+                        }
+                        n = ((int)(r.nextInt(10000) - 3000)) / 16d;
+                    }
+
+                    String s = fmt.format(n);
+                    logln(loc.getName() + names[j] + "success format: " + n + " -> " + s);
+
+                    if (testParse) {
+                        // We do not validate the result in this test case,
+                        // because there are cases which do not round trip by design.
+                        try {
+                            // non-lenient parse
+                            fmt.setLenientParseMode(false);
+                            Number num = fmt.parse(s);
+                            logln(loc.getName() + names[j] + "success parse: " + s + " -> " + num);
+
+                            // lenient parse
+                            fmt.setLenientScannerProvider(provider);
+                            fmt.setLenientParseMode(true);
+                            num = fmt.parse(s);
+                            logln(loc.getName() + names[j] + "success parse (lenient): " + s + " -> " + num);
+                        } catch (ParseException pe) {
+                            String msg = loc.getName() + names[j] + "ERROR:" + pe.getMessage();
+                            logln(msg);
+                            if (errors == null) {
+                                errors = new StringBuffer();
+                            }
+                            errors.append("\n" + msg);
+                        }
+                    }
+                }
+            }
+        }
+        if (errors != null) {
+            //TODO: We need to fix parse problems - see #6895 / #6896
+            //errln(errors.toString());
+            logln(errors.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();
+        }
+    }
+}
diff --git a/main/tests/collate/src/com/ibm/icu/dev/test/search/SearchTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/search/SearchTest.java
new file mode 100644
index 0000000..754cf2a
--- /dev/null
+++ b/main/tests/collate/src/com/ibm/icu/dev/test/search/SearchTest.java
@@ -0,0 +1,2012 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2009, 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;
+        }
+    }
+
+    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/main/tests/collate/src/com/ibm/icu/dev/test/util/ICUResourceBundleCollationTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/util/ICUResourceBundleCollationTest.java
new file mode 100644
index 0000000..f6fcc78
--- /dev/null
+++ b/main/tests/collate/src/com/ibm/icu/dev/test/util/ICUResourceBundleCollationTest.java
@@ -0,0 +1,178 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.MissingResourceException;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+
+
+public final class ICUResourceBundleCollationTest extends TestFmwk {
+    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";
+
+    public static void main(String args[]) throws Exception {
+        new ICUResourceBundleCollationTest().run(args);
+    }
+
+    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",
+       };
+
+       logln("Testing functional equivalents for collation...");
+       getFunctionalEquivalentTestCases(ICUResourceBundle.ICU_COLLATION_BASE_NAME,
+                                        Collator.class.getClassLoader(),
+               COLLATION_RESNAME, COLLATION_KEYWORD, true, collCases);
+    }
+
+    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.");
+        }
+    }
+
+    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 TestOpen(){
+        UResourceBundle bundle = (UResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_COLLATION_BASE_NAME, "en_US_POSIX");
+        if(bundle==null){
+            errln("could not load the stream");
+        }
+    }
+
+    private void getFunctionalEquivalentTestCases(String path, ClassLoader cl, 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, cl, 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());
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/main/tests/collate/src/com/ibm/icu/dev/test/util/LocaleAliasCollationTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/util/LocaleAliasCollationTest.java
new file mode 100644
index 0000000..1334e8a
--- /dev/null
+++ b/main/tests/collate/src/com/ibm/icu/dev/test/util/LocaleAliasCollationTest.java
@@ -0,0 +1,72 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.util;
+
+import java.util.HashMap;
+
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.util.ULocale;
+
+public class LocaleAliasCollationTest 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 static void main(String[] args) {
+        new LocaleAliasCollationTest().run(args);
+    }
+
+    public LocaleAliasCollationTest() {
+    }
+
+    protected void init(){
+        available = ULocale.getAvailableLocales();
+        for(int i=0; i<available.length;i++){
+            availableMap.put(available[i].toString(),"");
+        }
+    }
+
+    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);
+    }
+}
diff --git a/main/tests/collate/src/com/ibm/icu/dev/test/util/ULocaleCollationTest.java b/main/tests/collate/src/com/ibm/icu/dev/test/util/ULocaleCollationTest.java
new file mode 100644
index 0000000..b2970bf
--- /dev/null
+++ b/main/tests/collate/src/com/ibm/icu/dev/test/util/ULocaleCollationTest.java
@@ -0,0 +1,223 @@
+/*
+**********************************************************************
+* Copyright (c) 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.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.util.ULocale;
+
+public class ULocaleCollationTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new ULocaleCollationTest().run(args);
+    }
+
+    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);
+                    }
+                });
+    }
+
+
+    /**
+     * 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);
+    }
+
+
+
+    /**
+     * 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"));
+        }
+    }
+
+    /**
+     * 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");
+        }
+    }
+}
\ No newline at end of file
diff --git a/main/tests/core/.classpath b/main/tests/core/.classpath
new file mode 100644
index 0000000..b81bbbb
--- /dev/null
+++ b/main/tests/core/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry excluding="**/.svn/" kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-core"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-test-framework"/>
+	<classpathentry kind="output" path="out/bin"/>
+</classpath>
diff --git a/main/tests/core/.externalToolBuilders/copy-test-data.launch b/main/tests/core/.externalToolBuilders/copy-test-data.launch
new file mode 100644
index 0000000..84a657d
--- /dev/null
+++ b/main/tests/core/.externalToolBuilders/copy-test-data.launch
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_AFTER_CLEAN_TARGETS" value="copy-test-data,"/>
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_MANUAL_TARGETS" value="copy-test-data,"/>
+<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-core-tests/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-core-tests"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.running" value="true"/>
+<mapEntry key="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-core-tests/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"/>
+</launchConfiguration>
diff --git a/main/tests/core/.project b/main/tests/core/.project
new file mode 100644
index 0000000..7c377a2
--- /dev/null
+++ b/main/tests/core/.project
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>icu4j-core-tests</name>
+	<comment></comment>
+	<projects>
+		<project>icu4j-core</project>
+		<project>icu4j-shared</project>
+		<project>icu4j-test-framework</project>
+	</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/copy-test-data.launch</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/main/tests/core/.settings/org.eclipse.jdt.core.prefs b/main/tests/core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..b30d3c4
--- /dev/null
+++ b/main/tests/core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,330 @@
+#Wed Jun 24 13:35:57 EDT 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+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.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=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=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+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=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+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=ignore
+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.redundantSuperinterface=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.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+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.unusedParameterIncludeDocCommentReference=enabled
+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.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
+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=120
+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_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not 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=120
+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/main/tests/core/.settings/org.eclipse.jdt.ui.prefs b/main/tests/core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..9684238
--- /dev/null
+++ b/main/tests/core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,10 @@
+#Wed Jun 17 11:10:12 EDT 2009
+eclipse.preferences.version=1
+formatter_profile=_ICU4J Standard
+formatter_settings_version=11
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+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/main/tests/core/build.properties b/main/tests/core/build.properties
new file mode 100644
index 0000000..3dc6ef5
--- /dev/null
+++ b/main/tests/core/build.properties
@@ -0,0 +1,5 @@
+#*******************************************************************************
+#* Copyright (C) 2009, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+shared.dir = ../../shared
diff --git a/main/tests/core/build.xml b/main/tests/core/build.xml
new file mode 100644
index 0000000..d83fa4d
--- /dev/null
+++ b/main/tests/core/build.xml
@@ -0,0 +1,39 @@
+<!--
+*******************************************************************************
+* Copyright (C) 2009, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+-->
+<project name="core-tests" default="build" basedir=".">
+    <property file="build-local.properties"/>
+    <property file="build.properties"/>
+    <import file="${shared.dir}/build/common-targets.xml"/>
+
+    <path id="javac.classpathref">
+        <path refid="javac.classpathref.${ant.project.name}"/>
+    </path>
+    <property name="jar.file" value="${icu4j.core-tests.jar}"/>
+
+    <target name="build" depends="compile, copy, jar" description="Build the project"/>
+
+    <target name="build-all" depends="@build-all" description="Build the project including all dependencies"/>
+
+    <target name="clean" depends="@clean" description="Clean up the build outputs"/>
+
+    <target name="compile" depends="@compile" description="Compile java source files"/>
+
+    <target name="copy" depends="@copy, copy-test-data" description="Copy non-java runtime files to the project's binary directory"/>
+
+    <target name="jar" depends="compile, copy, @jar" description="Create the project's jar file"/>
+
+    <target name="copy-test-data" description="Extract pre-built ICU core test data files and copy them to the project's binary directory">
+        <unjar src="${icu4j.testdata.jar}" dest="${bin.dir}">
+            <patternset>
+                <exclude name="**/*.cnv"/>
+            	<exclude name="**/conversion.res"/>
+            </patternset>
+        </unjar>
+    </target>
+
+
+</project>
diff --git a/main/tests/core/core-tests-build.launch b/main/tests/core/core-tests-build.launch
new file mode 100644
index 0000000..b9ec0cd
--- /dev/null
+++ b/main/tests/core/core-tests-build.launch
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j-core-tests/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j-core-tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.running" value="true"/>
+<mapEntry key="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-core-tests/build.xml}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/main/tests/core/manifest.stub b/main/tests/core/manifest.stub
new file mode 100644
index 0000000..70a69ce
--- /dev/null
+++ b/main/tests/core/manifest.stub
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+
+Name: com/ibm/icu/dev/test
+Specification-Title: ICU for Java Core Tests
+Specification-Version: @SPECVERSION@
+Specification-Vendor: ICU
+Implementation-Title: ICU for Java Core Tests
+Implementation-Version: @IMPLVERSION@
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: @COPYRIGHT@
diff --git a/main/tests/core/src/com/ibm/icu/dev/data/IDNATestInput.txt b/main/tests/core/src/com/ibm/icu/dev/data/IDNATestInput.txt
new file mode 100644
index 0000000..adad095
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/data/TestDataElements_testtypes.java b/main/tests/core/src/com/ibm/icu/dev/data/TestDataElements_testtypes.java
new file mode 100644
index 0000000..32c5b32
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/data/rbbi/english.dict b/main/tests/core/src/com/ibm/icu/dev/data/rbbi/english.dict
new file mode 100644
index 0000000..10f430b
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/data/rbbi/english.dict
Binary files differ
diff --git a/main/tests/core/src/com/ibm/icu/dev/data/rbbi/words.txt b/main/tests/core/src/com/ibm/icu/dev/data/rbbi/words.txt
new file mode 100644
index 0000000..a7e06ac
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements.java b/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements.java
new file mode 100644
index 0000000..aae433e
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en.properties b/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en.properties
new file mode 100644
index 0000000..04c3f14
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn.properties b/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn.properties
new file mode 100644
index 0000000..e85eb94
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn_US.java b/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en_Latn_US.java
new file mode 100644
index 0000000..efc5355
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en_US.java b/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_en_US.java
new file mode 100644
index 0000000..dfa8468
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_fr_Latn_FR.java b/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_fr_Latn_FR.java
new file mode 100644
index 0000000..a469f80
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_fr_Latn_FR.java
@@ -0,0 +1,24 @@
+ /*
+  *******************************************************************************
+  * Copyright (C) 2005-2009, International Business Machines Corporation and    *
+  * others. All Rights Reserved.                                                *
+  *******************************************************************************
+  */
+
+package com.ibm.icu.dev.data.resources;
+
+import java.util.ListResourceBundle;
+
+public class TestDataElements_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/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_te.java b/main/tests/core/src/com/ibm/icu/dev/data/resources/TestDataElements_te.java
new file mode 100644
index 0000000..06d681f
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/data/thai6.ucs b/main/tests/core/src/com/ibm/icu/dev/data/thai6.ucs
new file mode 100644
index 0000000..a3d0282
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/data/thai6.ucs
Binary files differ
diff --git a/main/tests/core/src/com/ibm/icu/dev/data/unicode/CompositionExclusions.txt b/main/tests/core/src/com/ibm/icu/dev/data/unicode/CompositionExclusions.txt
new file mode 100644
index 0000000..f20528b
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/data/unicode/NormalizationCorrections.txt b/main/tests/core/src/com/ibm/icu/dev/data/unicode/NormalizationCorrections.txt
new file mode 100644
index 0000000..9391ace
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/data/unicode/NormalizationTest-3.2.0.txt b/main/tests/core/src/com/ibm/icu/dev/data/unicode/NormalizationTest-3.2.0.txt
new file mode 100644
index 0000000..43850f6
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/data/unicode/NormalizationTest.txt b/main/tests/core/src/com/ibm/icu/dev/data/unicode/NormalizationTest.txt
new file mode 100644
index 0000000..925e4f6
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/data/unicode/SpecialCasing.txt b/main/tests/core/src/com/ibm/icu/dev/data/unicode/SpecialCasing.txt
new file mode 100644
index 0000000..11a5b1d
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/data/unicode/UnicodeData.txt b/main/tests/core/src/com/ibm/icu/dev/data/unicode/UnicodeData.txt
new file mode 100644
index 0000000..77db788
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/data/unicode/ucdterms.txt b/main/tests/core/src/com/ibm/icu/dev/data/unicode/ucdterms.txt
new file mode 100644
index 0000000..7f1ddea
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/TestAllCore.java b/main/tests/core/src/com/ibm/icu/dev/test/TestAllCore.java
new file mode 100644
index 0000000..a7028e6
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/TestAllCore.java
@@ -0,0 +1,43 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import com.ibm.icu.dev.test.TestFmwk.TestGroup;
+
+public class TestAllCore extends TestGroup {
+
+    public static void main(String[] args) {
+        new TestAllCore().run(args);
+    }
+
+    public TestAllCore() {
+        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.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",
+                  "com.ibm.icu.dev.test.serializable.SerializableTest" // *is* a group
+              },
+              "All core tests in ICU");
+    }
+
+    public static final String CLASS_TARGET_NAME  = "Core";
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/bidi/BidiTest.java b/main/tests/core/src/com/ibm/icu/dev/test/bidi/BidiTest.java
new file mode 100644
index 0000000..19a5fc7
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestAll.java b/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestAll.java
new file mode 100644
index 0000000..084ea55
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestAll.java
@@ -0,0 +1,40 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2009, 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",
+                  "com.ibm.icu.dev.test.bidi.TestCompatibility",
+              },
+              "Bidi tests");
+    }
+
+    public static final String CLASS_TARGET_NAME  = "Bidi";
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestBidi.java b/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestBidi.java
new file mode 100644
index 0000000..84cfc47
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestCharFromDirProp.java b/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestCharFromDirProp.java
new file mode 100644
index 0000000..966c0d5
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestClassOverride.java b/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestClassOverride.java
new file mode 100644
index 0000000..1c396f7
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestCompatibility.java b/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestCompatibility.java
new file mode 100644
index 0000000..c213085
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestCompatibility.java
@@ -0,0 +1,294 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2007-2009, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.bidi;
+
+import java.awt.font.NumericShaper;
+import java.awt.font.TextAttribute;
+import java.text.AttributedCharacterIterator;
+import java.text.AttributedString;
+
+import com.ibm.icu.text.Bidi;
+
+/**
+ * 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);
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestData.java b/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestData.java
new file mode 100644
index 0000000..19ed4d2
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestFailureRecovery.java b/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestFailureRecovery.java
new file mode 100644
index 0000000..e9726fe
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestInverse.java b/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestInverse.java
new file mode 100644
index 0000000..0af1f95
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestMultipleParagraphs.java b/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestMultipleParagraphs.java
new file mode 100644
index 0000000..a84bde1
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorder.java b/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorder.java
new file mode 100644
index 0000000..a9436e2
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorderRunsOnly.java b/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorderRunsOnly.java
new file mode 100644
index 0000000..b239b07
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorderingMode.java b/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestReorderingMode.java
new file mode 100644
index 0000000..9c17d4e
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestStreaming.java b/main/tests/core/src/com/ibm/icu/dev/test/bidi/TestStreaming.java
new file mode 100644
index 0000000..6b015a0
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/bigdec/DiagBigDecimal.java b/main/tests/core/src/com/ibm/icu/dev/test/bigdec/DiagBigDecimal.java
new file mode 100644
index 0000000..5ca64ae
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/bigdec/DiagBigDecimal.java
@@ -0,0 +1,5614 @@
+/* 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-2009. 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
+        (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;
+
+        // 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;
+
+        // 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");
+
+        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() {
+        (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");
+    }
+
+    /* ----------------------------------------------------------------- */
+
+    /** 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/main/tests/core/src/com/ibm/icu/dev/test/calendar/AstroTest.java b/main/tests/core/src/com/ibm/icu/dev/test/calendar/AstroTest.java
new file mode 100644
index 0000000..f007bcd
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/calendar/CalendarRegression.java b/main/tests/core/src/com/ibm/icu/dev/test/calendar/CalendarRegression.java
new file mode 100644
index 0000000..ff03feb
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/calendar/CalendarRegression.java
@@ -0,0 +1,2158 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.MissingResourceException;
+
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.NumberFormat;
+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;
+
+/**
+ * @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());
+
+        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());
+        }
+    }
+
+    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 &&
+                    field != Calendar.IS_LEAP_MONTH ) {
+                    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]);
+                        cal.setMinimalDaysInFirstWeek(1);
+                        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 Pacific Daylight Time",
+
+                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 TestGetKeywordValuesForLocale(){
+
+        final String[][] PREFERRED = {
+            {"root",        "gregorian"},
+            {"und",         "gregorian"},
+            {"en_US",       "gregorian"},
+            {"en_029",      "gregorian"},
+            {"th_TH",       "buddhist", "gregorian"},
+            {"und_TH",      "buddhist", "gregorian"},
+            {"en_TH",       "buddhist", "gregorian"},
+            {"he_IL",       "gregorian", "hebrew", "islamic", "islamic-civil"},
+            {"ar_EG",       "gregorian", "coptic", "islamic", "islamic-civil"},
+            {"ja",          "gregorian", "japanese"},
+            {"ps_Guru_IN",  "gregorian", "indian"},
+            {"th@calendar=gregorian",   "buddhist", "gregorian"},
+            {"en@calendar=islamic",     "gregorian"},
+            {"zh_TW",       "gregorian", "roc", "chinese"},
+            {"ar_IR",       "gregorian", "persian", "islamic", "islamic-civil"},
+        };
+
+        String[] ALL = Calendar.getKeywordValuesForLocale("calendar", ULocale.getDefault(), false);
+        HashSet ALLSET = new HashSet();
+        for (int i = 0; i < ALL.length; i++) {
+            ALLSET.add(ALL[i]);
+        }
+
+        for (int i = 0; i < PREFERRED.length; i++) {
+            ULocale loc = new ULocale(PREFERRED[i][0]);
+            String[] expected = new String[PREFERRED[i].length - 1];
+            System.arraycopy(PREFERRED[i], 1, expected, 0, expected.length);
+
+            String[] pref = Calendar.getKeywordValuesForLocale("calendar", loc, true);
+            boolean matchPref = false;
+            if (pref.length == expected.length) {
+                matchPref = true;
+                for (int j = 0; j < pref.length; j++) {
+                    if (!pref[j].equals(expected[j])) {
+                        matchPref = false;
+                    }
+                }
+            }
+            if (!matchPref) {
+                errln("FAIL: Preferred values for locale " + loc 
+                        + " got:" + Arrays.toString(pref) + " expected:" + Arrays.toString(expected));
+            }
+
+            String[] all = Calendar.getKeywordValuesForLocale("calendar", loc, false);
+            boolean matchAll = false;
+            if (all.length == ALLSET.size()) {
+                matchAll = true;
+                for (int j = 0; j < all.length; j++) {
+                    if (!ALLSET.contains(all[j])) {
+                        matchAll = false;
+                        break;
+                    }
+                }
+            }
+            if (!matchAll) {
+                errln("FAIL: All values for locale " + loc
+                        + " got:" + Arrays.toString(all)); 
+            }
+        }
+    }
+
+}
+
+//eof
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/calendar/CalendarTest.java b/main/tests/core/src/com/ibm/icu/dev/test/calendar/CalendarTest.java
new file mode 100644
index 0000000..e80220a
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/calendar/CalendarTest.java
@@ -0,0 +1,442 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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(Calendar.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/main/tests/core/src/com/ibm/icu/dev/test/calendar/ChineseTest.java b/main/tests/core/src/com/ibm/icu/dev/test/calendar/ChineseTest.java
new file mode 100644
index 0000000..b4ff9fe
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/calendar/ChineseTest.java
@@ -0,0 +1,684 @@
+/*********************************************************************
+ * 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.*;
+
+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(Calendar.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(Calendar.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(Calendar.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
+            Calendar.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
+            Calendar.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
+            Calendar.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(Calendar.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(Calendar.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(Calendar.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(Calendar.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(Calendar.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(Calendar.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(Calendar.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/main/tests/core/src/com/ibm/icu/dev/test/calendar/ChineseTestCase.java b/main/tests/core/src/com/ibm/icu/dev/test/calendar/ChineseTestCase.java
new file mode 100644
index 0000000..f65a307
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/calendar/ChineseTestCase.java
@@ -0,0 +1,53 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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(Calendar.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(Calendar.IS_LEAP_MONTH)==1?"(leap)":"") + "/" +
+            get(Calendar.DAY_OF_MONTH);
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/calendar/CompatibilityTest.java b/main/tests/core/src/com/ibm/icu/dev/test/calendar/CompatibilityTest.java
new file mode 100644
index 0000000..ce3ae4d
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/calendar/CompatibilityTest.java
@@ -0,0 +1,1126 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.calendar;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+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.GregorianCalendar;
+import com.ibm.icu.util.SimpleTimeZone;
+import com.ibm.icu.util.TimeZone;
+
+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());
+        }
+
+        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());
+        }
+
+        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);
+            c.setMinimalDaysInFirstWeek(1);
+            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/main/tests/core/src/com/ibm/icu/dev/test/calendar/CopticTest.java b/main/tests/core/src/com/ibm/icu/dev/test/calendar/CopticTest.java
new file mode 100644
index 0000000..3b5108f
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/calendar/CopticTest.java
@@ -0,0 +1,421 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2009, 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");
+        SimpleDateFormat copticFmt = new SimpleDateFormat("EEE MMM dd, yyyy GG");
+        copticFmt.setCalendar(new CopticCalendar());
+
+        CopticCalendar cal = new CopticCalendar(1, 0, 1);
+        assertEquals("Coptic Date", "Fri Jan 01, 0001 AD", copticFmt.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", copticFmt.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);
+    }
+
+    /**
+     * Test for track ticket 6379 - proper reporting of
+     * maximum month lengths
+     */
+    public void Test6379()
+    {
+        int i;
+        Calendar cal = Calendar.getInstance();
+        cal.set(2007, Calendar.JANUARY, 1);
+        CopticCalendar coptic = new CopticCalendar();
+
+        // first twelve months have 30 days      
+        for (i = 0; i < 12; i++)
+        {
+            coptic.set(Calendar.MONTH, i);
+            if (30 != coptic.getActualMaximum(Calendar.DAY_OF_MONTH))
+            {
+                errln("30 days not returned for month " + (i + 1));
+            }
+        }
+
+        // test month 13
+        coptic.set(Calendar.MONTH, i);
+        if (5 != coptic.getActualMaximum(Calendar.DAY_OF_MONTH))
+        {
+            errln("5 days not returned for month " + (i + 1));
+        }
+    }    
+
+    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));
+    }
+
+    public void TestAddSet() {
+        class TestAddSetItem {
+            private int startYear;
+            private int startMonth; // 0-based
+            private int startDay; // 1-based
+            private int fieldToChange;
+            private int fieldDelta;
+            private int endYear;
+            private int endMonth;
+            private int endDay;
+            TestAddSetItem(int sYr, int sMo, int sDa, int field, int delta, int eYr, int eMo, int eDa) {
+                startYear = sYr;
+                startMonth = sMo;
+                startDay = sDa;
+                fieldToChange = field;
+                fieldDelta = delta;
+                endYear = eYr;
+                endMonth = eMo;
+                endDay = eDa;
+            }
+            public int getStartYear()  { return startYear; }
+            public int getStartMonth() { return startMonth; }
+            public int getStartDay()   { return startDay; }
+            public int getField()      { return fieldToChange; }
+            public int getDelta()      { return fieldDelta; }
+            public int getEndYear()    { return endYear; }
+            public int getEndMonth()   { return endMonth; }
+            public int getEndDay()     { return endDay; }
+        }
+        final TestAddSetItem[] tests = {
+            new TestAddSetItem( 1724, 12, 1, Calendar.MONTH, +1, 1725,  0, 1 ),
+            new TestAddSetItem( 1724, 12, 1, Calendar.MONTH, +9, 1725,  8, 1 ),
+            new TestAddSetItem( 1723, 12, 2, Calendar.MONTH, +1, 1724,  0, 2 ), // 1723 is a leap year
+            new TestAddSetItem( 1723, 12, 2, Calendar.MONTH, +9, 1724,  8, 2 ),
+            new TestAddSetItem( 1725,  0, 1, Calendar.MONTH, -1, 1724, 12, 1 ),
+            new TestAddSetItem( 1725,  0, 1, Calendar.MONTH, -6, 1724,  7, 1 ),
+            new TestAddSetItem( 1724, 12, 1, Calendar.DATE,  +8, 1725,  0, 4 ),
+            new TestAddSetItem( 1723, 12, 1, Calendar.DATE,  +8, 1724,  0, 3 ), // 1723 is a leap year
+            new TestAddSetItem( 1724,  0, 1, Calendar.DATE,  -1, 1723, 12, 6 ),
+        };
+        CopticCalendar testCalendar = new CopticCalendar();
+        for ( int i = 0; i < tests.length; i++ ) {
+            TestAddSetItem item = tests[i];
+        	testCalendar.set( item.getStartYear(), item.getStartMonth(), item.getStartDay(), 9, 0 );
+        	testCalendar.add( item.getField(), item.getDelta() );
+        	int endYear = testCalendar.get(Calendar.YEAR);
+        	int endMonth = testCalendar.get(Calendar.MONTH);
+        	int endDay = testCalendar.get(Calendar.DATE);
+        	if ( endYear != item.getEndYear() || endMonth != item.getEndMonth() || endDay != item.getEndDay() ) {
+        	    errln("CToJD FAILS: field " + item.getField() + " delta " + item.getDelta() + 
+                            " expected yr " + item.getEndYear() + " mo " + item.getEndMonth() +  " da " + item.getEndDay() +
+                            " got yr " + endYear + " mo " + endMonth +  " da " + endDay);
+        	}
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/calendar/DataDrivenCalendarTest.java b/main/tests/core/src/com/ibm/icu/dev/test/calendar/DataDrivenCalendarTest.java
new file mode 100644
index 0000000..15342f5
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/calendar/EthiopicTest.java b/main/tests/core/src/com/ibm/icu/dev/test/calendar/EthiopicTest.java
new file mode 100644
index 0000000..60b64a0
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/calendar/EthiopicTest.java
@@ -0,0 +1,478 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2009, 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");
+        fmt.setCalendar(new EthiopicCalendar());
+
+        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());
+        fmt.setCalendar(new GregorianCalendar());
+        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;
+    }
+
+    public void TestAddSet() {
+        class TestAddSetItem {
+            private int startYear;
+            private int startMonth; // 0-based
+            private int startDay; // 1-based
+            private int fieldToChange;
+            private int fieldDelta;
+            private int endYear;
+            private int endMonth;
+            private int endDay;
+            TestAddSetItem(int sYr, int sMo, int sDa, int field, int delta, int eYr, int eMo, int eDa) {
+                startYear = sYr;
+                startMonth = sMo;
+                startDay = sDa;
+                fieldToChange = field;
+                fieldDelta = delta;
+                endYear = eYr;
+                endMonth = eMo;
+                endDay = eDa;
+            }
+            public int getStartYear()  { return startYear; }
+            public int getStartMonth() { return startMonth; }
+            public int getStartDay()   { return startDay; }
+            public int getField()      { return fieldToChange; }
+            public int getDelta()      { return fieldDelta; }
+            public int getEndYear()    { return endYear; }
+            public int getEndMonth()   { return endMonth; }
+            public int getEndDay()     { return endDay; }
+        }
+        final TestAddSetItem[] tests = {
+            new TestAddSetItem( 2000, 12, 1, Calendar.MONTH, +1, 2001,  0, 1 ),
+            new TestAddSetItem( 2000, 12, 1, Calendar.MONTH, +9, 2001,  8, 1 ),
+            new TestAddSetItem( 1999, 12, 2, Calendar.MONTH, +1, 2000,  0, 2 ), // 1999 is a leap year
+            new TestAddSetItem( 1999, 12, 2, Calendar.MONTH, +9, 2000,  8, 2 ),
+            new TestAddSetItem( 2001,  0, 1, Calendar.MONTH, -1, 2000, 12, 1 ),
+            new TestAddSetItem( 2001,  0, 1, Calendar.MONTH, -6, 2000,  7, 1 ),
+            new TestAddSetItem( 2000, 12, 1, Calendar.DATE,  +8, 2001,  0, 4 ),
+            new TestAddSetItem( 1999, 12, 1, Calendar.DATE,  +8, 2000,  0, 3 ), // 1999 is a leap year
+            new TestAddSetItem( 2000,  0, 1, Calendar.DATE,  -1, 1999, 12, 6 ),
+        };
+        EthiopicCalendar testCalendar = new EthiopicCalendar();
+        for ( int i = 0; i < tests.length; i++ ) {
+            TestAddSetItem item = tests[i];
+        	testCalendar.set( item.getStartYear(), item.getStartMonth(), item.getStartDay(), 9, 0 );
+        	testCalendar.add( item.getField(), item.getDelta() );
+        	int endYear = testCalendar.get(Calendar.YEAR);
+        	int endMonth = testCalendar.get(Calendar.MONTH);
+        	int endDay = testCalendar.get(Calendar.DATE);
+        	if ( endYear != item.getEndYear() || endMonth != item.getEndMonth() || endDay != item.getEndDay() ) {
+        	    errln("EToJD FAILS: field " + item.getField() + " delta " + item.getDelta() + 
+                            " expected yr " + item.getEndYear() + " mo " + item.getEndMonth() +  " da " + item.getEndDay() +
+                            " got yr " + endYear + " mo " + endMonth +  " da " + endDay);
+        	}
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/calendar/HebrewTest.java b/main/tests/core/src/com/ibm/icu/dev/test/calendar/HebrewTest.java
new file mode 100644
index 0000000..e3a3914
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/calendar/HolidayTest.java b/main/tests/core/src/com/ibm/icu/dev/test/calendar/HolidayTest.java
new file mode 100644
index 0000000..5611e26
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java b/main/tests/core/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java
new file mode 100644
index 0000000..f7a1010
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/calendar/IBMCalendarTest.java
@@ -0,0 +1,1031 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2000-2009, 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);
+    }
+
+    }
+
+    /**
+     * 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());
+        }
+    }
+
+    public void TestTypes() {
+        String[] locs = {
+                "en_US_VALLEYGIRL",
+                "en_US_VALLEYGIRL@collation=phonebook;calendar=japanese",
+                "en_US_VALLEYGIRL@collation=phonebook;calendar=gregorian",
+                "ja_JP@calendar=japanese",
+                "th_TH@calendar=buddhist",
+                "ja_JP_TRADITIONAL",
+                "th_TH_TRADITIONAL",
+                "th_TH_TRADITIONAL@calendar=gregorian",
+                "en_US",
+                "th_TH",    // Default calendar for th_TH is buddhist
+                "th",       // th's default region is TH and buddhist is used as default for TH
+// FIXME: ICU Service canonicalize en_TH to en, so TH is ignored in Calendar instantiation.  See #6816.
+//                "en_TH",    // Default calendar for any locales with region TH is buddhist
+        };
+
+        String[] types = {
+                "gregorian",
+                "japanese",
+                "gregorian",
+                "japanese",
+                "buddhist",
+                "japanese",
+                "buddhist",
+                "gregorian",
+                "gregorian",
+                "buddhist",
+                "buddhist",
+// FIXME: ICU Service canonicalize en_TH to en, so TH is ignored in Calendar instantiation.  See #6816.
+//                "buddhist",
+        };
+
+        for (int i = 0; i < locs.length; i++) {
+            Calendar cal = Calendar.getInstance(new ULocale(locs[i]));
+            if (!cal.getType().equals(types[i])) {
+                errln(locs[i] + " Calendar type " + cal.getType() + " instead of " + types[i]);
+            }
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/calendar/IndianTest.java b/main/tests/core/src/com/ibm/icu/dev/test/calendar/IndianTest.java
new file mode 100644
index 0000000..0e6e3fc
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/calendar/IslamicTest.java b/main/tests/core/src/com/ibm/icu/dev/test/calendar/IslamicTest.java
new file mode 100644
index 0000000..60f7606
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/calendar/JapaneseTest.java b/main/tests/core/src/com/ibm/icu/dev/test/calendar/JapaneseTest.java
new file mode 100644
index 0000000..78dd274
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/calendar/TestAll.java b/main/tests/core/src/com/ibm/icu/dev/test/calendar/TestAll.java
new file mode 100644
index 0000000..f3f5a7d
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/calendar/TestCase.java b/main/tests/core/src/com/ibm/icu/dev/test/calendar/TestCase.java
new file mode 100644
index 0000000..ff062d7
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/calendar/package.html b/main/tests/core/src/com/ibm/icu/dev/test/calendar/package.html
new file mode 100644
index 0000000..ccb8858
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/charsetdet/CharsetDetectionTests.xml b/main/tests/core/src/com/ibm/icu/dev/test/charsetdet/CharsetDetectionTests.xml
new file mode 100644
index 0000000..9dcbf13
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/charsetdet/TestCharsetDetector.java b/main/tests/core/src/com/ibm/icu/dev/test/charsetdet/TestCharsetDetector.java
new file mode 100644
index 0000000..ff8f2da
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/charsetdet/TestCharsetDetector.java
@@ -0,0 +1,634 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2005-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.charsetdet;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.Reader;
+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;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.CharsetDetector;
+import com.ibm.icu.text.CharsetMatch;
+
+
+/**
+ * @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) {
+                StackTraceElement failPoint = e.getStackTrace()[1];
+                msg = "Test failure in file " + failPoint.getFileName() +
+                             " at line " + failPoint.getLineNumber();
+            }
+            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;
+            }
+        }
+    }
+
+    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();
+        }
+    }
+
+    public void TestArabic() throws Exception {
+        String  s = "\u0648\u0636\u0639\u062A \u0648\u0646\u0641\u0630\u062A \u0628\u0631\u0627" +
+        "\u0645\u062C \u062A\u0623\u0645\u064A\u0646 \u0639\u062F\u064A\u062F\u0629 \u0641\u064A " + 
+        "\u0645\u0624\u0633\u0633\u0629 \u0627\u0644\u062A\u0623\u0645\u064A\u0646 \u0627\u0644"  + 
+        "\u0648\u0637\u0646\u064A, \u0645\u0639 \u0645\u0644\u0627\u0626\u0645\u062A\u0647\u0627 " + 
+        "\u062F\u0627\u0626\u0645\u0627 \u0644\u0644\u0627\u062D\u062A\u064A\u0627\u062C" + 
+        "\u0627\u062A \u0627\u0644\u0645\u062A\u063A\u064A\u0631\u0629 \u0644\u0644\u0645\u062C" + 
+        "\u062A\u0645\u0639 \u0648\u0644\u0644\u062F\u0648\u0644\u0629. \u062A\u0648\u0633\u0639" + 
+        "\u062A \u0648\u062A\u0637\u0648\u0631\u062A \u0627\u0644\u0645\u0624\u0633\u0633\u0629 " + 
+        "\u0628\u0647\u062F\u0641 \u0636\u0645\u0627\u0646 \u0634\u0628\u0643\u0629 \u0623\u0645" + 
+        "\u0627\u0646 \u0644\u0633\u0643\u0627\u0646 \u062F\u0648\u0644\u0629 \u0627\u0633\u0631" + 
+        "\u0627\u0626\u064A\u0644 \u0628\u0648\u062C\u0647 \u0627\u0644\u0645\u062E\u0627\u0637" + 
+        "\u0631 \u0627\u0644\u0627\u0642\u062A\u0635\u0627\u062F\u064A\u0629 \u0648\u0627\u0644" + 
+        "\u0627\u062C\u062A\u0645\u0627\u0639\u064A\u0629.";
+
+        CharsetDetector det = new CharsetDetector();
+        CharsetMatch m;
+        String charsetMatch;
+        byte[] bytes;
+        {
+            bytes = s.getBytes("windows-1256");
+            det.setText(bytes);
+            m = det.detect();
+            charsetMatch = m.getName();
+            CheckAssert(charsetMatch.equals("windows-1256"));
+            
+            // Tests "public String getLanguage()"
+            CheckAssert(m.getLanguage().endsWith("ar"));
+        }
+
+        {
+            // We cannot rely on IBM420 converter in Sun Java
+            /*
+            bytes = s.getBytes("IBM420");
+            */
+            bytes = new byte[] {
+                (byte)0xCF, (byte)0x8D, (byte)0x9A, (byte)0x63, (byte)0x40, (byte)0xCF, (byte)0xBD, (byte)0xAB,
+                (byte)0x74, (byte)0x63, (byte)0x40, (byte)0x58, (byte)0x75, (byte)0x56, (byte)0xBB, (byte)0x67,
+                (byte)0x40, (byte)0x63, (byte)0x49, (byte)0xBB, (byte)0xDC, (byte)0xBD, (byte)0x40, (byte)0x9A,
+                (byte)0x73, (byte)0xDC, (byte)0x73, (byte)0x62, (byte)0x40, (byte)0xAB, (byte)0xDC, (byte)0x40,
+                (byte)0xBB, (byte)0x52, (byte)0x77, (byte)0x77, (byte)0x62, (byte)0x40, (byte)0x56, (byte)0xB1,
+                (byte)0x63, (byte)0x49, (byte)0xBB, (byte)0xDC, (byte)0xBD, (byte)0x40, (byte)0x56, (byte)0xB1,
+                (byte)0xCF, (byte)0x8F, (byte)0xBD, (byte)0xDC, (byte)0x6B, (byte)0x40, (byte)0xBB, (byte)0x9A,
+                (byte)0x40, (byte)0xBB, (byte)0xB1, (byte)0x56, (byte)0x55, (byte)0xBB, (byte)0x63, (byte)0xBF,
+                (byte)0x56, (byte)0x40, (byte)0x73, (byte)0x56, (byte)0x55, (byte)0xBB, (byte)0x56, (byte)0x40,
+                (byte)0xB1, (byte)0xB1, (byte)0x56, (byte)0x69, (byte)0x63, (byte)0xDC, (byte)0x56, (byte)0x67,
+                (byte)0x56, (byte)0x63, (byte)0x40, (byte)0x56, (byte)0xB1, (byte)0xBB, (byte)0x63, (byte)0x9E,
+                (byte)0xDC, (byte)0x75, (byte)0x62, (byte)0x40, (byte)0xB1, (byte)0xB1, (byte)0xBB, (byte)0x67,
+                (byte)0x63, (byte)0xBB, (byte)0x9A, (byte)0x40, (byte)0xCF, (byte)0xB1, (byte)0xB1, (byte)0x73,
+                (byte)0xCF, (byte)0xB1, (byte)0x62, (byte)0x4B, (byte)0x40, (byte)0x63, (byte)0xCF, (byte)0x77,
+                (byte)0x9A, (byte)0x63, (byte)0x40, (byte)0xCF, (byte)0x63, (byte)0x8F, (byte)0xCF, (byte)0x75,
+                (byte)0x63, (byte)0x40, (byte)0x56, (byte)0xB1, (byte)0xBB, (byte)0x52, (byte)0x77, (byte)0x77,
+                (byte)0x62, (byte)0x40, (byte)0x58, (byte)0xBF, (byte)0x73, (byte)0xAB, (byte)0x40, (byte)0x8D,
+                (byte)0xBB, (byte)0x56, (byte)0xBD, (byte)0x40, (byte)0x80, (byte)0x58, (byte)0xAF, (byte)0x62,
+                (byte)0x40, (byte)0x49, (byte)0xBB, (byte)0x56, (byte)0xBD, (byte)0x40, (byte)0xB1, (byte)0x77,
+                (byte)0xAF, (byte)0x56, (byte)0xBD, (byte)0x40, (byte)0x73, (byte)0xCF, (byte)0xB1, (byte)0x62,
+                (byte)0x40, (byte)0x56, (byte)0x77, (byte)0x75, (byte)0x56, (byte)0x55, (byte)0xDC, (byte)0xB1,
+                (byte)0x40, (byte)0x58, (byte)0xCF, (byte)0x67, (byte)0xBF, (byte)0x40, (byte)0x56, (byte)0xB1,
+                (byte)0xBB, (byte)0x71, (byte)0x56, (byte)0x8F, (byte)0x75, (byte)0x40, (byte)0x56, (byte)0xB1,
+                (byte)0x56, (byte)0xAD, (byte)0x63, (byte)0x8B, (byte)0x56, (byte)0x73, (byte)0xDC, (byte)0x62,
+                (byte)0x40, (byte)0xCF, (byte)0x56, (byte)0xB1, (byte)0x56, (byte)0x67, (byte)0x63, (byte)0xBB,
+                (byte)0x56, (byte)0x9A, (byte)0xDC, (byte)0x62, (byte)0x4B,
+            };
+            det.setText(bytes);
+            m = det.detect();
+            charsetMatch = m.getName();
+            CheckAssert(charsetMatch.equals("IBM420_rtl"));
+            
+         // Tests "public String getLanguage()"
+            CheckAssert(m.getLanguage().endsWith("ar"));
+        }
+
+        {
+            // We cannot rely on IBM420 converter in Sun Java
+            /*
+            StringBuffer ltrStrBuf = new StringBuffer(s);
+            ltrStrBuf = ltrStrBuf.reverse();
+            bytes = ltrStrBuf.toString().getBytes("IBM420");
+            */
+            bytes = new byte[] {
+                (byte)0x4B, (byte)0x62, (byte)0xDC, (byte)0x9A, (byte)0x56, (byte)0xBB, (byte)0x63, (byte)0x67,
+                (byte)0x56, (byte)0xB1, (byte)0x56, (byte)0xCF, (byte)0x40, (byte)0x62, (byte)0xDC, (byte)0x73,
+                (byte)0x56, (byte)0x8B, (byte)0x63, (byte)0xAD, (byte)0x56, (byte)0xB1, (byte)0x56, (byte)0x40,
+                (byte)0x75, (byte)0x8F, (byte)0x56, (byte)0x71, (byte)0xBB, (byte)0xB1, (byte)0x56, (byte)0x40,
+                (byte)0xBF, (byte)0x67, (byte)0xCF, (byte)0x58, (byte)0x40, (byte)0xB1, (byte)0xDC, (byte)0x55,
+                (byte)0x56, (byte)0x75, (byte)0x77, (byte)0x56, (byte)0x40, (byte)0x62, (byte)0xB1, (byte)0xCF,
+                (byte)0x73, (byte)0x40, (byte)0xBD, (byte)0x56, (byte)0xAF, (byte)0x77, (byte)0xB1, (byte)0x40,
+                (byte)0xBD, (byte)0x56, (byte)0xBB, (byte)0x49, (byte)0x40, (byte)0x62, (byte)0xAF, (byte)0x58,
+                (byte)0x80, (byte)0x40, (byte)0xBD, (byte)0x56, (byte)0xBB, (byte)0x8D, (byte)0x40, (byte)0xAB,
+                (byte)0x73, (byte)0xBF, (byte)0x58, (byte)0x40, (byte)0x62, (byte)0x77, (byte)0x77, (byte)0x52,
+                (byte)0xBB, (byte)0xB1, (byte)0x56, (byte)0x40, (byte)0x63, (byte)0x75, (byte)0xCF, (byte)0x8F,
+                (byte)0x63, (byte)0xCF, (byte)0x40, (byte)0x63, (byte)0x9A, (byte)0x77, (byte)0xCF, (byte)0x63,
+                (byte)0x40, (byte)0x4B, (byte)0x62, (byte)0xB1, (byte)0xCF, (byte)0x73, (byte)0xB1, (byte)0xB1,
+                (byte)0xCF, (byte)0x40, (byte)0x9A, (byte)0xBB, (byte)0x63, (byte)0x67, (byte)0xBB, (byte)0xB1,
+                (byte)0xB1, (byte)0x40, (byte)0x62, (byte)0x75, (byte)0xDC, (byte)0x9E, (byte)0x63, (byte)0xBB,
+                (byte)0xB1, (byte)0x56, (byte)0x40, (byte)0x63, (byte)0x56, (byte)0x67, (byte)0x56, (byte)0xDC,
+                (byte)0x63, (byte)0x69, (byte)0x56, (byte)0xB1, (byte)0xB1, (byte)0x40, (byte)0x56, (byte)0xBB,
+                (byte)0x55, (byte)0x56, (byte)0x73, (byte)0x40, (byte)0x56, (byte)0xBF, (byte)0x63, (byte)0xBB,
+                (byte)0x55, (byte)0x56, (byte)0xB1, (byte)0xBB, (byte)0x40, (byte)0x9A, (byte)0xBB, (byte)0x40,
+                (byte)0x6B, (byte)0xDC, (byte)0xBD, (byte)0x8F, (byte)0xCF, (byte)0xB1, (byte)0x56, (byte)0x40,
+                (byte)0xBD, (byte)0xDC, (byte)0xBB, (byte)0x49, (byte)0x63, (byte)0xB1, (byte)0x56, (byte)0x40,
+                (byte)0x62, (byte)0x77, (byte)0x77, (byte)0x52, (byte)0xBB, (byte)0x40, (byte)0xDC, (byte)0xAB,
+                (byte)0x40, (byte)0x62, (byte)0x73, (byte)0xDC, (byte)0x73, (byte)0x9A, (byte)0x40, (byte)0xBD,
+                (byte)0xDC, (byte)0xBB, (byte)0x49, (byte)0x63, (byte)0x40, (byte)0x67, (byte)0xBB, (byte)0x56,
+                (byte)0x75, (byte)0x58, (byte)0x40, (byte)0x63, (byte)0x74, (byte)0xAB, (byte)0xBD, (byte)0xCF,
+                (byte)0x40, (byte)0x63, (byte)0x9A, (byte)0x8D, (byte)0xCF,
+            };
+
+            det.setText(bytes);
+            m = det.detect();
+            charsetMatch = m.getName();
+            CheckAssert(charsetMatch.equals("IBM420_ltr"));
+        }
+    }
+
+    public void TestHebrew() throws Exception {
+        String  s =  "\u05D4\u05E4\u05E8\u05E7\u05DC\u05D9\u05D8 \u05D4\u05E6\u05D1\u05D0\u05D9 \u05D4" +
+            "\u05E8\u05D0\u05E9\u05D9, \u05EA\u05EA \u05D0\u05DC\u05D5\u05E3 \u05D0\u05D1\u05D9" + 
+            "\u05D7\u05D9 \u05DE\u05E0\u05D3\u05DC\u05D1\u05DC\u05D9\u05D8, \u05D4\u05D5\u05E8" + 
+            "\u05D4 \u05E2\u05DC \u05E4\u05EA\u05D9\u05D7\u05EA \u05D7\u05E7\u05D9\u05E8\u05EA " + 
+            "\u05DE\u05E6\"\u05D7 \u05D1\u05E2\u05E7\u05D1\u05D5\u05EA \u05E2\u05D3\u05D5\u05D9" + 
+            "\u05D5\u05EA \u05D7\u05D9\u05D9\u05DC\u05D9 \u05E6\u05D4\"\u05DC \u05DE\u05DE\u05D1" + 
+            "\u05E6\u05E2 \u05E2\u05D5\u05E4\u05E8\u05EA \u05D9\u05E6\u05D5\u05E7\u05D4 \u05D1+ " +
+            "\u05E8\u05E6\u05D5\u05E2\u05EA \u05E2\u05D6\u05D4. \u05DC\u05D3\u05D1\u05E8\u05D9 " + 
+            "\u05D4\u05E4\u05E6\"\u05E8, \u05DE\u05D4\u05E2\u05D3\u05D5\u05D9\u05D5\u05EA \u05E2" +
+            "\u05D5\u05DC\u05D4 \u05EA\u05DE\u05D5\u05E0\u05D4 \u05E9\u05DC \"\u05D4\u05EA\u05E0" + 
+            "\u05D4\u05D2\u05D5\u05EA \u05E4\u05E1\u05D5\u05DC\u05D4 \u05DC\u05DB\u05D0\u05D5\u05E8" + 
+            "\u05D4 \u05E9\u05DC \u05D7\u05D9\u05D9\u05DC\u05D9\u05DD \u05D1\u05DE\u05D4\u05DC\u05DA" + 
+            " \u05DE\u05D1\u05E6\u05E2 \u05E2\u05D5\u05E4\u05E8\u05EA \u05D9\u05E6\u05D5\u05E7\u05D4\"." + 
+            " \u05DE\u05E0\u05D3\u05DC\u05D1\u05DC\u05D9\u05D8 \u05E7\u05D9\u05D1\u05DC \u05D0\u05EA" +
+            " \u05D4\u05D7\u05DC\u05D8\u05EA\u05D5 \u05DC\u05D0\u05D7\u05E8 \u05E9\u05E2\u05D9\u05D9" +
+            "\u05DF \u05D1\u05EA\u05DE\u05DC\u05D9\u05DC \u05D4\u05E2\u05D3\u05D5\u05D9\u05D5\u05EA";
+        
+        CharsetMatch m = _test1255(s);
+        String charsetMatch = m.getName();
+        CheckAssert(charsetMatch.equals("ISO-8859-8"));
+        CheckAssert(m.getLanguage().equals("he"));
+        
+        m = _testIBM424_he_rtl(s);
+        charsetMatch = m.getName();
+        CheckAssert(charsetMatch.equals("IBM424_rtl"));
+        CheckAssert(m.getLanguage().equals("he"));
+        
+        m = _testIBM424_he_ltr(s);
+        charsetMatch = m.getName();
+        CheckAssert(charsetMatch.equals("IBM424_ltr"));
+        CheckAssert(m.getLanguage().equals("he"));
+    }
+    
+    private CharsetMatch _test1255(String s) throws Exception {
+        byte [] bytes = s.getBytes("ISO-8859-8");
+        CharsetDetector det = new CharsetDetector();
+        det.setText(bytes);
+        CharsetMatch m = det.detect();
+        return m;
+    }
+    
+    private CharsetMatch _testIBM424_he_rtl(String s) throws Exception {
+        byte [] bytes = s.getBytes("IBM424");
+        CharsetDetector det = new CharsetDetector();
+        det.setText(bytes);
+        CharsetMatch m = det.detect();
+        return m;
+    }
+    
+    private CharsetMatch _testIBM424_he_ltr(String s) throws Exception {
+        /**
+         * transformation of input string to CP420 left to right requires reversing the string
+         */    
+        
+        StringBuffer ltrStrBuf = new StringBuffer(s);
+        ltrStrBuf = ltrStrBuf.reverse();
+        byte [] bytes = ltrStrBuf.toString().getBytes("IBM424");
+        
+        CharsetDetector det = new CharsetDetector();
+        det.setText(bytes);
+        CharsetMatch m = det.detect();
+        return m;
+    }
+    
+    /*
+     * Test the method int match(CharsetDetector det) in CharsetRecog_UTF_16_LE
+     */
+    public void TestCharsetRecog_UTF_16_LE_Match() {
+        byte[] in = { Byte.MIN_VALUE, Byte.MIN_VALUE, Byte.MIN_VALUE, Byte.MIN_VALUE };
+        CharsetDetector cd = new CharsetDetector();
+        // Tests when if (input.length>=4 && input[2] == 0x00 && input[3] == 0x00) is true inside the
+        // match(CharsetDetector) method of CharsetRecog_UTF_16_LE
+        try {
+            cd.setText(in);
+        } catch (Exception e) {
+            errln("CharsetRecog_UTF_16_LE.match(CharsetDetector) was not suppose to return an exception.");
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/cldr/TestAll.java b/main/tests/core/src/com/ibm/icu/dev/test/cldr/TestAll.java
new file mode 100644
index 0000000..9dc2ee1
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/cldr/TestCLDRVsICU.java b/main/tests/core/src/com/ibm/icu/dev/test/cldr/TestCLDRVsICU.java
new file mode 100644
index 0000000..a30f309
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/cldr/TestCLDRVsICU.java
@@ -0,0 +1,643 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2009, International Business Machines
+* Corporation and others.  All Rights Reserved.
+**********************************************************************
+* Author: Mark Davis
+**********************************************************************
+*/
+package com.ibm.icu.dev.test.cldr;
+
+import java.io.File;
+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.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+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.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+import com.ibm.icu.dev.test.TestFmwk;
+// dlf collation is no longer in core, so this test either can't be in core, or can't test it
+// import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+// dlf transliterator is also not in core
+// import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * This is a test file that takes in the CLDR XML test files and test against
+ * ICU4J. This test file is used to verify that ICU4J is implemented correctly.
+ * As it stands, the test generates all the errors to the console by logging it.
+ * The logging is only possible if "-v" or verbose is set as an argument.
+ * This will allow users to know what problems occurred within CLDR and ICU.
+ * Collator was disabled in this test file and therefore will be skipped.
+ * 
+ * Instructions:
+ * 1)   In order for this to work correctly, you must download the latest CLDR data
+ *      in the form of XML. You must also set the CLDR directory using:
+ *          -DCLDR_DIRECTORY=<top level of cldr>
+ * 2)   You may also consider increasing the memory using -Xmx512m.
+ * 3)   For speed purposes, you may consider creating a temporary directory for the
+ *      CLDR cache using:
+ *          -DCLDR_DTD_CACHE=<cldr cache directory>
+ * 4)   You may use other environment variables to narrow down your tests using:
+ *          -DXML_MATCH=".*"
+ *              -DXML_MATCH="de.*"  (or whatever regex you want) to just test certain locales.
+ *          -DTEST_MATCH="zone.*"   (or whatever regex you want) to just test collation, numbers, etc.
+ *          -DZONE_MATCH="(?!America/Argentina).*" 
+ *              -DZONE_MATCH=".*Moscow.*" (to only test certain zones)
+
+ * @author medavis
+ * @author John Huan Vu (johnvu@us.ibm.com)
+ */
+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", ".*");
+
+        // CLDR_DIRECTORY is where all the CLDR XML test files are located
+        // WARNING: THIS IS TEMPORARY DIRECTORY UNTIL THE FILES ARE 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);
+
+        // johnvu: Collator was originally disabled
+        // 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, "test/" + localeName + ".xml");
+        logln("Testing " + f.getCanonicalPath());
+        SAX.parse(f, DEFAULT_HANDLER);
+    }  
+
+    private static class ToHex {
+        public String transliterate(String in) {
+            StringBuilder sb = new StringBuilder();
+            for (int i = 0; i < in.length(); ++i) {
+                char c = in.charAt(i);
+                sb.append("\\u");
+                if (c < 1000) {
+                    sb.append('0');
+                    if (c < 100) {
+                        sb.append('0');
+                        if (c < 10) {
+                            sb.append('0');
+                        }
+                    }
+                }
+                sb.append(Integer.toHexString((int) c));
+            }
+            return sb.toString();
+        }
+    }
+
+    // static Transliterator toUnicode = Transliterator.getInstance("any-hex");
+    private static final ToHex toUnicode = new ToHex();
+
+    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 (settings.get("draft").equals("unconfirmed") || settings.get("draft").equals("provisional")) {
+                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 };
+
+    // The following are different data format types that are part of the parameters in CLDR
+    static String[] DateFormatNames = { "none", "short", "medium", "long", "full" };
+
+    // The following are different number types that are part of the parameters in CLDR
+    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();
+    }
+
+    {
+        // johnvu: Collator was originally disabled
+        // TODO (dougfelt) move this test
+        /*
+          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);
+
+                    // Checks if the attribute name is a draft and whether
+                    // or not it has been approved / contributed by CLDR yet
+                    // otherwise, skips it because it is most likely rejected by ICU
+                    if (attributeName.equals("draft")) {
+                        if (attributeValue.indexOf("approved") == -1 && attributeValue.indexOf("contributed") == -1) {
+                            break;
+                        }
+                        continue;
+                    }
+
+                    // Update the value to be checked
+                    if (attributeName.equals("input")) {
+                        v = Double.parseDouble(attributeValue);
+                        continue;
+                    }
+
+                    // At this point, it must be a numberType
+                    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)) {
+                        logln("Number: Locale: " + locale +
+                                "\n\tType: " + attributeValue +
+                                "\n\tDraft: " + settings.get("draft") +
+                                "\n\tCLDR: <" + result + ">" +
+                                "\n\tICU: <" + 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();
+                boolean approved = true;
+
+                for (Iterator it = settings.keySet().iterator(); it.hasNext();) {
+                    String attributeName = (String) it.next();
+                    String attributeValue = (String) settings.get(attributeName);
+
+                    // Checks if the attribute name is a draft and whether
+                    // or not it has been approved / contributed by CLDR yet
+                    // otherwise, skips it because it is most likely rejected by ICU
+                    if (attributeName.equals("draft")) {
+                        if (attributeValue.indexOf("approved") == -1 && attributeValue.indexOf("contributed") == -1) {
+                            approved = false;
+                            break;
+                        }
+                        continue;
+                    }
+
+                    // Update the value to be checked
+                    if (attributeName.equals("input")) {
+                        date = iso.parse(attributeValue);
+                        continue;
+                    }
+                    // At this point, it must be either dateType or timeType
+                    int index = lookupValue(attributeValue, DateFormatNames);
+                    if (attributeName.equals("dateType"))
+                        dateFormat = index;
+                    else if (attributeName.equals("timeType"))
+                        timeFormat = index;
+
+                }
+
+                // The attribute value must be approved in order to be checked,
+                // if it hasn't been approved, it shouldn't be checked if it
+                // matches with ICU
+                if (approved) {
+                    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)) {
+                        logln("DateTime: Locale: " + locale +
+                                "\n\tDate: " + DateFormatNames[dateFormat] +
+                                "\n\tTime: " + DateFormatNames[timeFormat] +
+                                "\n\tDraft: " + settings.get("draft") +
+                                "\n\tCLDR: <" + result + "> " +
+                                "\n\tICU: <" + 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())) {
+                    logln("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)
+                    logln("\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
+                    logln("Zone Format: Locale: " + locale 
+                            + "\n\tZone: " + zone
+                            + "\n\tDate: " + date
+                            + "\n\tField: " + pattern
+                            + "\n\tParse: " + parse
+                            + "\n\tDraft: " + settings.get("draft")
+                            + "\n\tCLDR: <" + result
+                            + ">\n\tICU: <" + temp + ">");
+                }
+            }
+        });
+    }
+
+    // ============ Gorp for SAX ============
+
+    {
+        try {
+            SAXParserFactory factory = SAXParserFactory.newInstance();
+            factory.setValidating(true);
+            SAX = factory.newSAXParser();
+        } catch (Exception e) {
+            throw new IllegalArgumentException("SAXParserFacotry was unable to 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") && handler != null) {
+                    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 != null) {
+                    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);
+        }
+    };
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/compression/DecompressionTest.java b/main/tests/core/src/com/ibm/icu/dev/test/compression/DecompressionTest.java
new file mode 100644
index 0000000..963b959
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/compression/DecompressionTest.java
@@ -0,0 +1,237 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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;
+        }
+    }
+    
+    /* Testing the method
+     *      public int decompress(*** 
+     */
+    public void TestDecompress(){
+        char[] charBufferBlank = {};
+        char[] charBuffer1 = {'a'};
+        char[] charValid = {'d','u','m','m','y'};
+        
+        // Test when "if(charBuffer.length < 2 || (charBufferLimit - charBufferStart) < 2)" is true
+        //      The following tests when "charBuffer.length < 2"
+        UnicodeDecompressor ud = new UnicodeDecompressor();
+        try{
+            ud.decompress(null, 0, 0, null, null, 4, 0);
+            errln("UnicodeDecompressor.decompress was suppose to return an exception.");
+        } catch(Exception e){}
+        
+        try{
+            ud.decompress(null, 0, 0, null, charBufferBlank, 4, 0);
+            errln("UnicodeDecompressor.decompress was suppose to return an exception.");
+        } catch(Exception e){}
+        
+        try{
+            ud.decompress(null, 0, 0, null, charBuffer1, 4, 0);
+            errln("UnicodeDecompressor.decompress was suppose to return an exception.");
+        } catch(Exception e){}
+        
+        //      The following tests when "(charBufferLimit - charBufferStart) < 2"
+        try{
+            ud.decompress(null, 0, 0, null, charValid, 0, 0);
+            errln("UnicodeDecompressor.decompress was suppose to return an exception.");
+        } catch(Exception e){}
+        
+        try{
+            ud.decompress(null, 0, 0, null, charValid, 1, 0);
+            errln("UnicodeDecompressor.decompress was suppose to return an exception.");
+        } catch(Exception e){}
+        
+        try{
+            ud.decompress(null, 0, 0, null, charValid, 1, 1);
+            errln("UnicodeDecompressor.decompress was suppose to return an exception.");
+        } catch(Exception e){}
+        
+        try{
+            ud.decompress(null, 0, 0, null, charValid, 0, 1);
+            errln("UnicodeDecompressor.decompress was suppose to return an exception.");
+        } catch(Exception e){}
+        
+        try{
+            ud = new UnicodeDecompressor();
+            byte[] b = {
+                    (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,
+                    (byte) 0x00, (byte) 0x09, (byte) 0x0A, (byte) 0x0D,
+                    (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) UnicodeDecompressor.SQUOTEU,
+                    (byte) UnicodeDecompressor.SCHANGEU, 
+                    (byte) UnicodeDecompressor.SQUOTE0, (byte) UnicodeDecompressor.SQUOTE1, (byte) UnicodeDecompressor.SQUOTE2, (byte) UnicodeDecompressor.SQUOTE3,
+                    (byte) UnicodeDecompressor.SQUOTE4, (byte) UnicodeDecompressor.SQUOTE5, (byte) UnicodeDecompressor.SQUOTE6, (byte) UnicodeDecompressor.SQUOTE7,
+                    (byte) UnicodeDecompressor.SCHANGE0, (byte) UnicodeDecompressor.SCHANGE1, (byte) UnicodeDecompressor.SCHANGE2, (byte) UnicodeDecompressor.SCHANGE3,
+                    (byte) UnicodeDecompressor.SCHANGE4, (byte) UnicodeDecompressor.SCHANGE5, (byte) UnicodeDecompressor.SCHANGE6, (byte) UnicodeDecompressor.SCHANGE7,
+                    (byte) UnicodeDecompressor.SDEFINE0, (byte) UnicodeDecompressor.SDEFINE1, (byte) UnicodeDecompressor.SDEFINE2, (byte) UnicodeDecompressor.SDEFINE3,
+                    (byte) UnicodeDecompressor.SDEFINE4, (byte) UnicodeDecompressor.SDEFINE5, (byte) UnicodeDecompressor.SDEFINE6, (byte) UnicodeDecompressor.SDEFINE7,
+                    (byte) UnicodeDecompressor.SDEFINEX, (byte) UnicodeDecompressor.SRESERVED,
+                    };
+            char[] c = new char[b.length];
+            ud.decompress(b, 0, b.length, null, c, 0, c.length);
+        } catch(Exception e){
+            errln("UnicodeDecompressor.decompress() was not suppose to return an exception.");
+        }
+    }
+
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/compression/ExhaustiveTest.java b/main/tests/core/src/com/ibm/icu/dev/test/compression/ExhaustiveTest.java
new file mode 100644
index 0000000..2230027
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/compression/TestAll.java b/main/tests/core/src/com/ibm/icu/dev/test/compression/TestAll.java
new file mode 100644
index 0000000..133435b
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/compression/package.html b/main/tests/core/src/com/ibm/icu/dev/test/compression/package.html
new file mode 100644
index 0000000..426bc94
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/DataReadWriteTest.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/DataReadWriteTest.java
new file mode 100644
index 0000000..f54a484
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/ICUDurationTest.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/ICUDurationTest.java
new file mode 100644
index 0000000..9376915
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/duration/ICUDurationTest.java
@@ -0,0 +1,264 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.duration;
+
+import java.text.FieldPosition;
+import java.util.Date;
+import java.util.MissingResourceException;
+
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.Duration;
+
+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);
+        }
+    }
+
+    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);
+            }
+        }
+    }
+
+
+    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.");
+        }
+    }
+    
+    /* Tests the class
+     *      DurationFormat
+     */
+    public void TestDurationFormat(){
+        @SuppressWarnings("serial")
+        class TestDurationFormat extends DurationFormat {
+            public StringBuffer format(Object object, StringBuffer toAppend, FieldPosition pos) {return null;}
+            public String formatDurationFrom(long duration, long referenceDate) {return null;}
+            public String formatDurationFromNow(long duration) {return null;}
+            public String formatDurationFromNowTo(Date targetDate) {return null;}
+            public TestDurationFormat() {super();}
+            
+        }
+        
+        // Tests the constructor and the following method
+        //      public Object parseObject(String source, ParsePosition pos)
+        try{
+            TestDurationFormat tdf = new TestDurationFormat();
+            tdf.parseObject("",null);
+            errln("DurationFormat.parseObjet(String,ParsePosition) was " +
+                    "to return an exception for an unsupported operation.");
+        } catch(Exception e){}
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/duration/LanguageTestRoot.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/LanguageTestRoot.java
new file mode 100644
index 0000000..fc5f095
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/PeriodBuilderFactoryTest.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/PeriodBuilderFactoryTest.java
new file mode 100644
index 0000000..b83f5c7
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/PeriodBuilderTest.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/PeriodBuilderTest.java
new file mode 100644
index 0000000..7a7927f
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/PeriodTest.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/PeriodTest.java
new file mode 100644
index 0000000..ba2fda3
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/RegressionTest.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/RegressionTest.java
new file mode 100644
index 0000000..3250087
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/ResourceBasedPeriodFormatterDataServiceTest.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/ResourceBasedPeriodFormatterDataServiceTest.java
new file mode 100644
index 0000000..cb88a5b
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/TestAll.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/TestAll.java
new file mode 100644
index 0000000..9b1a17f
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/TestAll.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/TestAll.java
new file mode 100644
index 0000000..ffaaa0f
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ar_EG.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ar_EG.java
new file mode 100644
index 0000000..09a059c
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_en.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_en.java
new file mode 100644
index 0000000..d9fad85
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_es.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_es.java
new file mode 100644
index 0000000..f1ccaf2
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_fr.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_fr.java
new file mode 100644
index 0000000..eb17231
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_he_IL.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_he_IL.java
new file mode 100644
index 0000000..cb7e3eb
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_hi.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_hi.java
new file mode 100644
index 0000000..bf33b75
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_it.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_it.java
new file mode 100644
index 0000000..518788b
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ja.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ja.java
new file mode 100644
index 0000000..02619e6
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ko.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ko.java
new file mode 100644
index 0000000..ae722a0
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ru.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_ru.java
new file mode 100644
index 0000000..f27d0a1
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans.java
new file mode 100644
index 0000000..1dbc28a
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans_SG.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hans_SG.java
new file mode 100644
index 0000000..3932c06
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant.java
new file mode 100644
index 0000000..df6963f
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant_HK.java b/main/tests/core/src/com/ibm/icu/dev/test/duration/languages/Test_zh_Hant_HK.java
new file mode 100644
index 0000000..4e49aff
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_ar_EG.txt b/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_ar_EG.txt
new file mode 100644
index 0000000..40f20ee
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_en.txt b/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_en.txt
new file mode 100644
index 0000000..4d5a1d8
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_es.txt b/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_es.txt
new file mode 100644
index 0000000..ff440ff
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_fr.txt b/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_fr.txt
new file mode 100644
index 0000000..d709b06
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_he_IL.txt b/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_he_IL.txt
new file mode 100644
index 0000000..5399755
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_hi.txt b/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_hi.txt
new file mode 100644
index 0000000..0ac7666
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_it.txt b/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_it.txt
new file mode 100644
index 0000000..a705acb
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_ja.txt b/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_ja.txt
new file mode 100644
index 0000000..ffa6d9b
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_ko.txt b/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_ko.txt
new file mode 100644
index 0000000..6831459
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_ru.txt b/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_ru.txt
new file mode 100644
index 0000000..28aeb7f
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_th.txt b/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_th.txt
new file mode 100644
index 0000000..50a81fe
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hans.txt b/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hans.txt
new file mode 100644
index 0000000..fa5e422
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hans_SG.txt b/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hans_SG.txt
new file mode 100644
index 0000000..039221e
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hant.txt b/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hant.txt
new file mode 100644
index 0000000..49f5b00
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hant_HK.txt b/main/tests/core/src/com/ibm/icu/dev/test/duration/testdata/testdata_zh_Hant_HK.txt
new file mode 100644
index 0000000..3dcd425
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/format/BigNumberFormatTest.java b/main/tests/core/src/com/ibm/icu/dev/test/format/BigNumberFormatTest.java
new file mode 100644
index 0000000..a7ea53b
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/BigNumberFormatTest.java
@@ -0,0 +1,450 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import java.text.ParseException;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.text.NumberFormat;
+
+/**
+ * @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);
+            }
+        }
+    }
+    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);
+            }
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/format/DataDrivenFormatTest.java b/main/tests/core/src/com/ibm/icu/dev/test/format/DataDrivenFormatTest.java
new file mode 100644
index 0000000..ffc2e37
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatMiscTests.java b/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatMiscTests.java
new file mode 100644
index 0000000..fd04c3f
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java b/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java
new file mode 100644
index 0000000..c48aede
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatRegressionTest.java
@@ -0,0 +1,1128 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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);
+        }
+    }
+
+    public void Test_GEec() {
+        class PatternAndResult {
+            private String pattern;
+            private String result;
+            PatternAndResult(String pat, String res) {
+                pattern = pat;
+                result = res;
+            }
+            public String getPattern()  { return pattern; }
+            public String getResult()  { return result; }
+        }
+        final PatternAndResult[] tests = {
+            new PatternAndResult( "dd MMM yyyy GGG",   "02 Jul 2008 AD" ),
+            new PatternAndResult( "dd MMM yyyy GGGGG", "02 Jul 2008 A" ),
+            new PatternAndResult( "e dd MMM yyyy",     "3 02 Jul 2008" ),
+            new PatternAndResult( "ee dd MMM yyyy",    "03 02 Jul 2008" ),
+            new PatternAndResult( "c dd MMM yyyy",     "3 02 Jul 2008" ),
+            new PatternAndResult( "cc dd MMM yyyy",    "3 02 Jul 2008" ),
+            new PatternAndResult( "eee dd MMM yyyy",   "Wed 02 Jul 2008" ),
+            new PatternAndResult( "EEE dd MMM yyyy",   "Wed 02 Jul 2008" ),
+            new PatternAndResult( "EE dd MMM yyyy",    "Wed 02 Jul 2008" ),
+            new PatternAndResult( "eeee dd MMM yyyy",  "Wednesday 02 Jul 2008" ),
+            new PatternAndResult( "eeeee dd MMM yyyy", "W 02 Jul 2008" ),
+            new PatternAndResult( "e ww YYYY",         "3 27 2008" ),
+            new PatternAndResult( "c ww YYYY",         "3 27 2008" ),
+        };
+        ULocale loc = ULocale.ENGLISH;
+        TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
+        Calendar cal = new GregorianCalendar(tz, loc);
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MMM-dd", loc);
+        for ( int i = 0; i < tests.length; i++ ) {
+            PatternAndResult item = tests[i];
+            dateFormat.applyPattern( item.getPattern() );
+            cal.set(2008, 6, 2, 5, 0); // 2008 July 02 5 AM PDT
+            StringBuffer buf = new StringBuffer(32);
+            FieldPosition fp = new FieldPosition(DateFormat.YEAR_FIELD);
+            dateFormat.format(cal, buf, fp);
+            if ( buf.toString().compareTo(item.getResult()) != 0 ) {
+                errln("for pattern " + item.getPattern() + ", expected " + item.getResult() + ", got " + buf );
+            }
+            ParsePosition pos = new ParsePosition(0);
+            dateFormat.parse( item.getResult(), cal, pos);
+            int year = cal.get(Calendar.YEAR);
+            int month = cal.get(Calendar.MONTH);
+            int day = cal.get(Calendar.DATE);
+            if ( year != 2008 || month != 6 || day != 2 ) {
+            	errln("use pattern " + item.getPattern() + " to parse " + item.getResult() +
+            	        ", expected y2008 m6 d2, got " + year + " " + month + " " + day );
+            }
+        }
+    }
+
+    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);
+            // Note: The default date pattern for Japanese calendar starts with era in CLDR 1.7
+            char last = s.charAt(s.length() - 1);
+            if(last<kArabicZero || last>(kArabicZero+9)) {
+                errln(what + " wrong  digit but got " + s + " (integer digit value " + new Integer((int)last).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/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatRegressionTestJ.java b/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatRegressionTestJ.java
new file mode 100644
index 0000000..14464f2
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatRoundTripTest.java b/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatRoundTripTest.java
new file mode 100644
index 0000000..26e7757
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatTest.java b/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatTest.java
new file mode 100644
index 0000000..c18d38b
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/DateFormatTest.java
@@ -0,0 +1,3680 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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.text.ChineseDateFormat.Field;
+import com.ibm.icu.util.BuddhistCalendar;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ChineseCalendar;
+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;
+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", "", "Pacific Daylight Time", "", "", "", "", "", "", "","","","","","",
+
+            "", "1997", "ao\u00FBt", "13", "", "14", "34", "12", "",
+            "mercredi", "", "", "", "", "", "", "", "heure avanc\u00E9e du Pacifique", "", "", "", "", "", "", "","","","","","",
+
+            "AD", "1997", "8", "13", "14", "14", "34", "12", "5",
+            "Wed", "225", "2", "33", "2", "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", "0002", "PM", "0002", "0002", "Pacific Daylight Time", "1997",
+            "Wednesday", "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);
+
+        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", "Pacific Daylight Time",
+             "", "", "1997", ""},
+
+            {"", "13", "mercredi", "", "",
+             "", "", "", "14", "",
+             "", "", "", "", "",
+             "34", "ao\u00FBt", "", "12", "heure avanc\u00E9e du Pacifique",
+             "", "", "1997", ""},
+
+            {"PM", "13", "Wed", "2", "225",
+             "4", "AD", "1997", "14", "14",
+             "2", "2", "2450674", "5", "52452513",
+             "34", "8", "3", "12", "PDT",
+             "2", "33", "1997", "1997"},
+
+            {"PM", "0013", "Wednesday", "0002", "0225",
+             "Wednesday", "Anno Domini", "1997", "0014", "0014",
+             "0002", "0002", "2450674", "5130", "52452513",
+             "0034", "August", "3rd quarter", "0012", "Pacific Daylight Time",
+             "0002", "0033", "1997", "1997"},
+        };
+
+        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);
+            }
+
+            // 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);
+            }
+        }
+    }
+    /**
+     * This MUST be kept in sync with DateFormatSymbols.patternChars.
+     */
+    static final String PATTERN_CHARS = "GyMdkHmsSEDFwWahKzYeugAZvcLQqV";
+
+    /**
+     * 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
+    };
+
+    /**
+     * 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\u6807\u51c6\u65f6\u95f4", "-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\u65f6\u95f4", "-4:00" },
+        { "zh", "America/Havana", "2004-07-15T00:00:00Z", "v", "\u53e4\u5df4\u65f6\u95f4", "America/Havana" },
+        { "zh", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\u53e4\u5df4\u65f6\u95f4", "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\u65f6\u95f4", "Europe/London" },
+        { "zh", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\u82f1\u56fd\u65f6\u95f4", "Europe/London" },
+        { "zh", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "\u82f1\u56fd\u65f6\u95f4", "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\u65f6\u95f4", "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\u0947\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\u0947\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 heure avanc\u00E9e du Pacifique";
+        //String expectedFRENCH = "lundi 15 septembre 1997 00 h 00 PDT";
+        String expectedUS = "Monday, September 15, 1997 12:00:00 AM Pacific Daylight Time";
+        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 Locale("en_US"));
+        try{
+            sym = new ChineseDateFormatSymbols(null, new Locale("en_US"));
+            errln("ChineseDateFormatSymbols(Calender, Locale) was suppose to return a null " +
+                    "pointer exception for a null paramater.");
+        } catch(Exception e){}
+        sym = new ChineseDateFormatSymbols(new ChineseCalendar(), new Locale("en_US"));
+        try{
+            sym = new ChineseDateFormatSymbols(null, new ULocale("en_US"));
+            errln("ChineseDateFormatSymbols(Calender, ULocale) was suppose to return a null " +
+                    "pointer exception for a null paramater.");
+        } catch(Exception e){}
+        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 DateFormat's parsing of default GMT variants.  See ticket#6135
+     */
+    public void TestGMTParsing() {
+        String DATA[] = {
+            "HH:mm:ss Z",
+
+            // pattern, input, expected output (in quotes)
+            "HH:mm:ss Z",       "10:20:30 GMT+03:00",   "10:20:30 +0300",
+            "HH:mm:ss Z",       "10:20:30 UT-02:00",    "10:20:30 -0200",
+            "HH:mm:ss Z",       "10:20:30 GMT",         "10:20:30 +0000",
+            "HH:mm:ss vvvv",    "10:20:30 UT+10:00",    "10:20:30 +1000",
+            "HH:mm:ss zzzz",    "10:20:30 UTC",         "10:20:30 +0000",   // standalone "UTC"
+            "ZZZZ HH:mm:ss",    "UT 10:20:30",          "10:20:30 +0000",
+            "V HH:mm:ss",       "UT+0130 10:20:30",     "10:20:30 +0130",
+            "V HH:mm:ss",       "UTC+0130 10:20:30",    null,               // UTC+0130 is not a supported pattern
+            "HH mm Z ss",       "10 20 GMT-1100 30",    "10:20:30 -1100",
+        };
+        expectParse(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);
+    }
+    */
+
+    /*
+     * 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 != Calendar.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);
+            }
+        }
+    }
+
+    /*
+     * 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);
+                    }
+                }
+            }
+        }
+    }
+
+    /*
+     * Test for format/parse method with calendar which is different
+     * from what DateFormat instance internally use.  See ticket#6420.
+     */
+    public void TestRoundtripWithCalendar() {
+        TimeZone tz = TimeZone.getTimeZone("Europe/Paris");
+        TimeZone gmt = TimeZone.getTimeZone("Etc/GMT");
+
+        final Calendar[] calendars = {
+            new GregorianCalendar(tz),
+            new BuddhistCalendar(tz),
+            new HebrewCalendar(tz),
+            new IslamicCalendar(tz),
+            new JapaneseCalendar(tz),
+        };
+
+        final String pattern = "GyMMMMdEEEEHHmmssVVVV";
+
+        //FIXME The formatters commented out below are currently failing because of
+        // the calendar calculation problem reported by #6691
+
+        // The order of test formatters mus match the order of calendars above.
+        final DateFormat[] formatters = {
+            DateFormat.getPatternInstance(pattern, new ULocale("en_US")), //calendar=gregorian
+            DateFormat.getPatternInstance(pattern, new ULocale("th_TH")), //calendar=buddhist
+            DateFormat.getPatternInstance(pattern, new ULocale("he_IL@calendar=hebrew")),
+//            DateFormat.getPatternInstance(pattern, new ULocale("ar_EG@calendar=islamic")),
+//            DateFormat.getPatternInstance(pattern, new ULocale("ja_JP@calendar=japanese")),
+        };
+
+        Date d = new Date();
+        StringBuffer buf = new StringBuffer();
+        FieldPosition fpos = new FieldPosition(0);
+        ParsePosition ppos = new ParsePosition(0);
+
+        for (int i = 0; i < formatters.length; i++) {
+            buf.setLength(0);
+            fpos.setBeginIndex(0);
+            fpos.setEndIndex(0);
+            calendars[i].setTime(d);
+
+            // Normal case output - the given calendar matches the calendar
+            // used by the formatter
+            formatters[i].format(calendars[i], buf, fpos);
+            String refStr = buf.toString();
+
+            for (int j = 0; j < calendars.length; j++) {
+                if (j == i) {
+                    continue;
+                }
+                buf.setLength(0);
+                fpos.setBeginIndex(0);
+                fpos.setEndIndex(0);
+                calendars[j].setTime(d);
+
+                // Even the different calendar type is specified,
+                // we should get the same result.
+                formatters[i].format(calendars[j], buf, fpos);
+                if (!refStr.equals(buf.toString())) {
+                    errln("FAIL: Different format result with a different calendar for the same time -"
+                            + "\n Reference calendar type=" + calendars[i].getType()
+                            + "\n Another calendar type=" + calendars[j].getType()
+                            + "\n Expected result=" + refStr
+                            + "\n Actual result=" + buf.toString());
+                }
+            }
+
+            calendars[i].setTimeZone(gmt);
+            calendars[i].clear();
+            ppos.setErrorIndex(-1);
+            ppos.setIndex(0);
+
+            // Normal case parse result - the given calendar matches the calendar
+            // used by the formatter
+            formatters[i].parse(refStr, calendars[i], ppos);
+
+            for (int j = 0; j < calendars.length; j++) {
+                if (j == i) {
+                    continue;
+                }
+                calendars[j].setTimeZone(gmt);
+                calendars[j].clear();
+                ppos.setErrorIndex(-1);
+                ppos.setIndex(0);
+
+                // Even the different calendar type is specified,
+                // we should get the same time and time zone.
+                formatters[i].parse(refStr, calendars[j], ppos);
+                if (calendars[i].getTimeInMillis() != calendars[j].getTimeInMillis()
+                        || !calendars[i].getTimeZone().equals(calendars[j].getTimeZone())) {
+                    errln("FAIL: Different parse result with a different calendar for the same string -"
+                            + "\n Reference calendar type=" + calendars[i].getType()
+                            + "\n Another calendar type=" + calendars[j].getType()
+                            + "\n Date string=" + refStr
+                            + "\n Expected time=" + calendars[i].getTimeInMillis()
+                            + "\n Expected time zone=" + calendars[i].getTimeZone().getID()
+                            + "\n Actual time=" + calendars[j].getTimeInMillis()
+                            + "\n Actual time zone=" + calendars[j].getTimeZone().getID());
+                }
+            }
+        }
+    }
+
+    // based on TestRelativeDateFormat() in icu/trunk/source/test/cintltst/cdattst.c
+    public void TestRelativeDateFormat() {
+        ULocale loc = ULocale.US;
+        TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
+        Calendar cal = new GregorianCalendar(tz, loc);
+        Date now = new Date();
+        cal.setTime(now);
+        cal.set(Calendar.HOUR_OF_DAY, 18);
+        cal.set(Calendar.MINUTE, 49);
+        cal.set(Calendar.SECOND, 0);
+        Date today = cal.getTime();
+        String minutesStr = "49"; // minutes string to search for in formatted result
+        int[] dateStylesList = { DateFormat.RELATIVE_FULL, DateFormat.RELATIVE_LONG, DateFormat.RELATIVE_MEDIUM, DateFormat.RELATIVE_SHORT };
+
+        for (int i = 0; i < dateStylesList.length; i++) {
+            int dateStyle = dateStylesList[i];
+            DateFormat fmtRelDateTime = DateFormat.getDateTimeInstance(dateStyle, DateFormat.SHORT, loc);
+            DateFormat fmtRelDate = DateFormat.getDateInstance(dateStyle, loc);
+            DateFormat fmtTime = DateFormat.getTimeInstance(DateFormat.SHORT, loc);
+
+            for (int dayOffset = -2; dayOffset <= 2; dayOffset++ ) {
+                StringBuffer dateTimeStr = new StringBuffer(64);
+                StringBuffer dateStr = new StringBuffer(64);
+                StringBuffer timeStr = new StringBuffer(64);
+                FieldPosition fp = new FieldPosition(DateFormat.MINUTE_FIELD);
+                cal.setTime(today);
+                cal.add(Calendar.DATE, dayOffset);
+
+                fmtRelDateTime.format(cal, dateTimeStr, fp);
+                fmtRelDate.format(cal, dateStr, new FieldPosition(0) );
+                fmtTime.format(cal, timeStr, new FieldPosition(0) );
+
+                // check that dateStr is in dateTimeStr
+                if ( dateTimeStr.toString().indexOf( dateStr.toString() ) < 0 ) {
+                    errln("relative date string not found in datetime format with timeStyle SHORT, dateStyle " +
+                            dateStyle + " for dayOffset " + dayOffset );
+                    errln("datetime format is " + dateTimeStr.toString() + ", date string is " + dateStr.toString() );
+                }
+                // check that timeStr is in dateTimeStr
+                if ( dateTimeStr.toString().indexOf( timeStr.toString() ) < 0 ) {
+                    errln("short time string not found in datetime format with timeStyle SHORT, dateStyle " +
+                            dateStyle + " for dayOffset " + dayOffset );
+                    errln("datetime format is " + dateTimeStr.toString() + ", time string is " + timeStr.toString() );
+                }
+                // check index of minutesStr
+                int minutesStrIndex = dateTimeStr.toString().indexOf( minutesStr );
+                if ( fp.getBeginIndex() != minutesStrIndex ) {
+                    errln("FieldPosition beginIndex " + fp.getBeginIndex() + " instead of " + minutesStrIndex + " for datetime format with timeStyle SHORT, dateStyle " +
+                            dateStyle + " for dayOffset " + dayOffset );
+                    errln("datetime format is " + dateTimeStr.toString() );
+                }
+            }
+        }
+    }
+
+    public void Test6880() {
+        Date d1, d2, dp1, dp2, dexp1, dexp2;
+        String s1, s2;
+
+        TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai");
+        GregorianCalendar gcal = new GregorianCalendar(tz);
+
+        gcal.clear();
+        gcal.set(1910, Calendar.JANUARY, 1, 12, 00);    // offset 8:05:52
+        d1 = gcal.getTime();
+
+        gcal.clear();
+        gcal.set(1950, Calendar.JANUARY, 1, 12, 00);    // offset 8:00
+        d2 = gcal.getTime();
+
+        gcal.clear();
+        gcal.set(1970, Calendar.JANUARY, 1, 12, 00);
+        dexp2 = gcal.getTime();
+        dexp1 = new Date(dexp2.getTime() - (5*60 + 52)*1000);   // subtract 5m52s
+
+        DateFormat fmt = DateFormat.getTimeInstance(DateFormat.FULL, new ULocale("zh"));
+        fmt.setTimeZone(tz);
+
+        s1 = fmt.format(d1);
+        s2 = fmt.format(d2);
+
+        try {
+            dp1 = fmt.parse(s1);
+            dp2 = fmt.parse(s2);
+
+            if (!dp1.equals(dexp1)) {
+                errln("FAIL: Failed to parse " + s1 + " parsed: " + dp1 + " expected: " + dexp1);
+            }
+            if (!dp2.equals(dexp2)) {
+                errln("FAIL: Failed to parse " + s2 + " parsed: " + dp2 + " expected: " + dexp2);
+            }
+        } catch (ParseException pe) {
+            errln("FAIL: Parse failure");
+        }
+    }
+    
+    /*
+     * Tests the constructor public SimpleDateFormat(String pattern, String override, ULocale loc)
+     */
+    public void TestSimpleDateFormatConstructor_String_String_ULocale() {
+        try {
+            SimpleDateFormat sdf = new SimpleDateFormat("", "", null);
+            sdf = (SimpleDateFormat) sdf.clone();
+        } catch (Exception e) {
+            errln("SimpleDateFormat(String pattern, String override, ULocale loc) "
+                    + "was not suppose to return an exception when constructing a new " + "SimpleDateFormat object.");
+        }
+    }
+
+    /*
+     * Tests the method public static DateFormat.Field ofCalendarField(int calendarField)
+     */
+    public void TestOfCalendarField() {
+        // Tests when if (calendarField == ChineseCalendar.IS_LEAP_MONTH) is false
+        int[] cases = { Calendar.IS_LEAP_MONTH - 1};
+        for (int i = 0; i < cases.length; i++) {
+            try {
+                Field.ofCalendarField(cases[i]);
+            } catch (Exception e) {
+                errln("Field.ofCalendarField(int) is not suppose to " + "return an exception for parameter " + cases[i]);
+            }
+        }
+    }
+    
+    /* Tests the method public final static DateFormat getPatternInstance */
+    public void TestGetPatternInstance(){
+        //public final static DateFormat getPatternInstance(String pattern)
+        try{
+            @SuppressWarnings("unused")
+            DateFormat df = DateFormat.getPatternInstance("");
+            df = DateFormat.getPatternInstance("", new Locale("en_US"));
+            df = DateFormat.getPatternInstance(null, "", new Locale("en_US"));
+        } catch(Exception e) {
+            errln("DateFormat.getPatternInstance is not suppose to return an exception.");
+        }
+    }
+       
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java b/main/tests/core/src/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java
new file mode 100644
index 0000000..80e1d6e
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/DateIntervalFormatTest.java
@@ -0,0 +1,1211 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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.text.DateIntervalInfo.PatternInfo;
+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 root
+            "root", "2007 11 10 10:10:10", "2007 12 10 10:10:10", "yM", "2007-11 \\u2013 12",
+         
+            // test 'H' and 'h', using availableFormat in fallback
+            "en", "2007 11 10 10:10:10", "2007 11 10 15:10:10", "Hms", "10:10:10 \\u2013 15:10:10",
+            "en", "2007 11 10 10:10:10", "2007 11 10 15:10:10", "hms", "10:10:10 AM \\u2013 3:10:10 PM",
+
+            // 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", "\\u7f8e\\u56fd (\\u6d1b\\u6749\\u77f6)\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hmz", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10", 
+            
+            "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", "\\u7f8e\\u56fd (\\u6d1b\\u6749\\u77f6)\\u4e0a\\u534810\\u81f3\\u4e0b\\u53482\\u65f6", 
+            
+            "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hz", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800\\u4e0a\\u534810\\u81f3\\u4e0b\\u53482\\u65f6", 
+            
+            "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", "\\u7f8e\\u56fd (\\u6d1b\\u6749\\u77f6)\\u4e0a\\u534810:00\\u81f310:20", 
+            
+            "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 vorm. - 10.10.2008 10:10 vorm.", 
+            
+            "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "jm", "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 vorm. Vereinigte Staaten (Los Angeles) - 10.11.2007 10:10 vorm. Vereinigte Staaten (Los Angeles)", 
+            
+            "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "jmv", "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 vorm. - 10.11.2007 10:10:10 vorm.", 
+            
+            "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 vorm. Vereinigte Staaten (Los Angeles) - 20.11.2007 10:10 vorm. Vereinigte Staaten (Los Angeles)", 
+            
+            "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "jmv", "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 vorm.", 
+
+            "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "jm", "10:10", 
+
+            "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hmv", "10:10 vorm. Vereinigte Staaten (Los Angeles)", 
+            
+            "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "jmv", "10:10 Vereinigte Staaten (Los Angeles)", 
+
+            "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hmz", "10:10 vorm. GMT-08:00", 
+            
+            "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "jmz", "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());
+        }
+    }
+    
+    /* Tests the method
+     *      public boolean equals(Object a)
+     */
+    public void TestDateIntervalInfoEquals(){
+        // Tests when "if ( a instanceof PatternInfo )" is false
+        DateIntervalInfo diia = new DateIntervalInfo();
+        if(diia.equals("dummy")){
+            errln("DateIntervalInfo.equals(Object a) was suppose to return " +
+                    "false for a String object.");
+        }
+        if(diia.equals(0)){
+            errln("DateIntervalInfo.equals(Object a) was suppose to return " +
+                    "false for an Integer object.");
+        }
+        if(diia.equals(0.0)){
+            errln("DateIntervalInfo.equals(Object a) was suppose to return " +
+                    "false for an Integer object.");
+        }
+        if(diia.equals(new Object())){
+            errln("DateIntervalInfo.equals(Object a) was suppose to return " +
+                    "false for an Integer object.");
+        }
+    }
+    
+    /* Tests the method
+     *      public Object cloneAsThawed()
+     */
+    public void TestCloseAsThawed(){
+        DateIntervalInfo dii = new DateIntervalInfo();
+        try{
+            dii.cloneAsThawed();
+        } catch(Exception e){
+            errln("DateIntervalInfo.closeAsThawed() was not suppose to return " +
+                    "an exception.");
+        }
+    }
+    
+    /* Tests the method
+     *      public boolean isFrozen()
+     */
+    public void TestIsFrozen(){
+        DateIntervalInfo dii = new DateIntervalInfo();
+        if(dii.isFrozen() != false){
+            errln("DateIntervalInfo.isFrozen() is suppose to return false.");
+        }
+        dii.freeze();
+        
+        if(dii.isFrozen() != true){
+            errln("DateIntervalInfo.isFrozen() is suppose to return true.");
+        }
+    }
+    
+    /* Tests the method
+     *      public boolean clone()
+     */
+    public void TestClone(){
+        DateIntervalInfo dii = new DateIntervalInfo(new ULocale("en_US"));
+        DateIntervalInfo dii_clone = (DateIntervalInfo) dii.clone();
+        dii_clone.freeze();
+        
+        // Tests when "if ( frozen )" is true
+        if(!dii.equals(dii_clone)){
+            errln("DateIntervalInfo.clone() is suppose to return true for " +
+                    "an original DateIntervalInfo object and a clone of the " +
+                    "original DateIntervalInfo object.");
+        }
+    }
+    
+    /* Tests the method
+     *      public void setFallbackIntervalPattern(String fallbackPattern)
+     */
+    public void TestSetFallbackIntervalPattern(){
+        DateIntervalInfo dii = new DateIntervalInfo(new ULocale("en_US"));
+        // Tests when "if ( frozen )" is true
+        try{
+            dii.freeze();
+            dii.setFallbackIntervalPattern("");
+            errln("DateIntervalInfo.setFallbackIntervalPattern(String fallbackPattern) " +
+                    "was suppose to return an exception for a frozen object.");
+        } catch (Exception e){}
+        
+        // Tests when "if ( firstPatternIndex == -1 || secondPatternIndex == -1 )" is true
+        dii = (DateIntervalInfo) dii.cloneAsThawed();
+        try{
+            dii.setFallbackIntervalPattern("");
+            errln("DateIntervalInfo.setFallbackIntervalPattern(String fallbackPattern) " +
+                    "was suppose to return an exception for a string object of ''.");
+        } catch(Exception e){}
+        
+        try{
+            dii.setFallbackIntervalPattern("0");
+            errln("DateIntervalInfo.setFallbackIntervalPattern(String fallbackPattern) " +
+                    "was suppose to return an exception for a string object of 0.");
+        } catch(Exception e){}
+        
+        // Tests when "if ( firstPatternIndex > secondPatternIndex )" is true
+        dii.setFallbackIntervalPattern("{1}{0}");
+        if(dii.getDefaultOrder() != true)
+            errln("DateIntervalInfo.setFallbackIntervalPattern(String fallbackPattern) " +
+                    "was suppose to change the variable 'fFirstDateInPtnIsLaterDate' " +
+                    "to true.");
+    }
+    
+    /* Tests the method
+     *      public PatternInfo getIntervalPattern(String skeleton, int field)
+     */
+    public void TestGetIntervalPattern(){
+        // Tests when "if ( field > MINIMUM_SUPPORTED_CALENDAR_FIELD )" is true
+        // MINIMUM_SUPPORTED_CALENDAR_FIELD = Calendar.MINUTE;
+        DateIntervalInfo dii = new DateIntervalInfo();
+        try{
+            dii.getIntervalPattern("", Calendar.MINUTE+1);
+            errln("DateIntervalInfo.getIntervalPattern(String,int) was suppose " +
+                    "to return an exception for the 'int field' parameter " +
+                    "when it exceeds MINIMUM_SUPPORTED_CALENDAR_FIELD.");
+        } catch(Exception e){}
+    }
+    
+    /* Tests the method
+     *      public void setIntervalPattern(String skeleton, int lrgDiffCalUnit, String intervalPattern)
+     */
+    public void TestSetIntervalPattern(){
+        DateIntervalInfo dii = new DateIntervalInfo();
+        // Tests when "if ( frozen )" is true
+        try{
+            dii.freeze();
+            dii.setIntervalPattern("", 0, "");
+            errln("DateIntervalInfo.setIntervalPattern(String,int,String) " +
+                    "was suppose to return an exception when the " +
+                    "DateIntervalInfo object is frozen.");
+        } catch(Exception e){}
+        
+        // Tests when "if ( lrgDiffCalUnit > MINIMUM_SUPPORTED_CALENDAR_FIELD )" is true
+        // MINIMUM_SUPPORTED_CALENDAR_FIELD = Calendar.MINUTE;
+        try{
+            dii = (DateIntervalInfo) dii.cloneAsThawed();
+            dii.setIntervalPattern("", Calendar.MINUTE+1, "");
+            errln("DateIntervalInfo.setIntervalPattern(String,int,String) " +
+                    "was suppose to return an exception when the " +
+                    "variable 'lrgDiffCalUnit' is greater than " + 
+                    "MINIMUM_SUPPORTED_CALENDAR_FIELD.");
+        } catch(Exception e){}
+    }
+    
+    /* Tests the method
+     *      public int hashCode()
+     */
+    public void TestHashCode(){
+        // Tests when
+        //      "int hash = fIntervalPatternFirstPart != null ? fIntervalPatternFirstPart.hashCode() : 0;"
+        // is false
+        PatternInfo dp = new PatternInfo(null, null, false);
+        if(dp.hashCode() != 0){
+            errln("PatternInfo.hashCode() was suppose to return 0 for a null " +
+                    "paramter in the constructor.");
+        }
+    }
+    
+    /* Tests the method
+     *      public boolean equals(Object a)
+     * in PatternInfo
+     */
+    public void TestPattternInfoEquals(){
+        // Tests when "if ( a instanceof PatternInfo )" is false
+        PatternInfo pi = new PatternInfo("","", false);
+        if(pi.equals(new Object())){
+            errln("PatternInfo.equals(Object) is suppose to return false " +
+                    "when it is not an instance of PatternInfo.");
+        }
+        if(pi.equals("")){
+            errln("PatternInfo.equals(Object) is suppose to return false " +
+                    "when it is not an instance of PatternInfo.");
+        }
+        if(pi.equals(0)){
+            errln("PatternInfo.equals(Object) is suppose to return false " +
+                    "when it is not an instance of PatternInfo.");
+        }
+        if(pi.equals(0.0)){
+            errln("PatternInfo.equals(Object) is suppose to return false " +
+                    "when it is not an instance of PatternInfo.");
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java b/main/tests/core/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java
new file mode 100644
index 0000000..32c251f
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/DateTimeGeneratorTest.java
@@ -0,0 +1,982 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2006-2009, Google, International Business Machines Corporation *
+ * and others. All Rights Reserved.                                            *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.test.format;
+
+import java.text.ParsePosition;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.Set;
+
+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.FormatParser;
+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;
+    static {
+        try {
+            GENERATE_TEST_DATA = System.getProperty("GENERATE_TEST_DATA") != null;
+        } catch (SecurityException e) {
+            GENERATE_TEST_DATA = false;
+        }
+    };
+    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
+        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 Mitteleurop\u00E4ische Sommerzeit", 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"},
+              {"yyyyqqqq", "4th quarter 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"},
+              {"hhmmVVVV", "06:58 AM GMT+00:00"},
+        };
+        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 TestRoot() {
+        DateTimePatternGenerator rootGen = DateTimePatternGenerator.getInstance(ULocale.ROOT);
+        SimpleDateFormat rootFormat = new SimpleDateFormat(rootGen.getBestPattern("yMdHms"), ULocale.ROOT);
+        rootFormat.setTimeZone(gmt);
+        assertEquals("root format: yMdHms", "1999-10-14 6:58:59", rootFormat.format(sampleDate));
+    }
+    
+    public void TestEmpty() {
+        // now nothing
+        DateTimePatternGenerator nullGen = DateTimePatternGenerator.getEmptyInstance();
+        SimpleDateFormat format = new SimpleDateFormat(nullGen.getBestPattern("yMdHms"), ULocale.ROOT);
+        TimeZone rootZone = TimeZone.getTimeZone("Etc/GMT");
+        format.setTimeZone(rootZone);
+    }
+
+    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[] {"jjmm", "11:58 PM"},
+        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[] {"jjmm", "23:58"},
+        new String[] {"hhmm", "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", "tammikuuta 1999"},  // tammi 1999
+        new String[] {"yMd", "13.1.1999"},
+        new String[] {"yMMMd", "13. tammikuuta 1999"},
+        new String[] {"Md", "13.1."},
+        new String[] {"MMMd", "13. tammikuuta"},
+        new String[] {"yQQQ", "1. nelj./1999"},  // 1. nelj. 1999
+        new String[] {"jjmm", "23.58"},
+        new String[] {"hhmm", "11.58 ip."},
+        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   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,3,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];            
+        }
+    }
+    
+    DateTimePatternGenerator.FormatParser formatParser = new DateTimePatternGenerator.FormatParser ();
+    DateTimePatternGenerator generator = DateTimePatternGenerator.getEmptyInstance();
+    
+    private Calendar sampleCalendar = new GregorianCalendar(1999, Calendar.OCTOBER, 13, 23, 58, 59);
+    private Date sampleDate = sampleCalendar.getTime();
+    private TimeZone gmt = TimeZone.getTimeZone("Etc/GMT");
+    
+    /**
+     * 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 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;
+    }
+      /* Tests the method
+       *        public static DateTimePatternGenerator getInstance()
+       */
+      public void TestGetInstance(){
+          try{
+              DateTimePatternGenerator.getInstance();
+          } catch(Exception e){
+              errln("DateTimePatternGenerator.getInstance() was not suppose to " +
+                      "return an exception.");
+          }
+      }
+      
+      /* Tests the method
+       *        public String getSkeleton(String pattern)
+       */
+      public void TestGetSkeleton(){
+          DateTimePatternGenerator dtpg = DateTimePatternGenerator.getInstance();
+          String[] cases = {"MMDD","MMMDD","MMM-DD","DD/MMM","ddM"};
+          String[] results = {"MMDD","MMMDD","MMMDD","MMMDD","Mdd"};
+          for(int i=0; i<cases.length; i++){
+              if(!dtpg.getSkeleton(cases[i]).equals(results[i])){
+                  errln("DateTimePatternGenerator.getSkeleton(String) did " +
+                          "return the expected result when passing " + cases[i] +
+                          " and expected " + results[i] + " but got " +
+                          dtpg.getSkeleton(cases[i]));
+              }
+          }
+      }
+      
+      /* Tests the method
+       *        public String getBaseSkeleton(String pattern)
+       */
+      public void TestGetBaseSkeleton(){
+          DateTimePatternGenerator dtpg = DateTimePatternGenerator.getInstance();
+          String[] cases = {"MMDD","MMMDD","MMM-DD","DD/MMM","ddM"};
+          String[] results = {"MD","MMMD","MMMD","MMMD","Md"};
+          for(int i=0; i<cases.length; i++){
+              if(!dtpg.getBaseSkeleton(cases[i]).equals(results[i])){
+                  errln("DateTimePatternGenerator.getSkeleton(String) did " +
+                          "return the expected result when passing " + cases[i] +
+                          " and expected " + results[i] + " but got " +
+                          dtpg.getBaseSkeleton(cases[i]));
+              }
+          }
+      }
+      
+      /* Tests the method
+       *        public Map<String, String> getSkeletons(Map<String, String> result)
+       */
+      public void TestGetSkeletons(){
+          DateTimePatternGenerator dtpg = DateTimePatternGenerator.getInstance();
+          // Tests when "if (result == null)" is true
+          try{
+              dtpg.getSkeletons(null);
+          } catch(Exception e){
+              errln("DateTimePatternGenerator.getSkeletons(Map) was suppose to " +
+                      "return a new LinkedHashMap for a null parameter.");
+          }
+          
+          // Tests when "if (result == null)" is false
+          Map<String,String> mm = new LinkedHashMap<String, String>();
+          try{
+              dtpg.getSkeletons(mm);
+          } catch(Exception e){
+              errln("DateTimePatternGenerator.getSkeletons(Map) was suppose to " +
+                      "return a new LinkedHashMap for a LinkedHashMap parameter.");
+          }
+      }
+      
+      /* Tests the method
+       *        public Set<String> getBaseSkeletons(Set<String> result)
+       */
+      public void TestGetBaseSkeletons(){
+          DateTimePatternGenerator dtpg = DateTimePatternGenerator.getInstance();
+          // Tests when "if (result == null)" is true
+          try{
+              dtpg.getBaseSkeletons(null);
+          } catch(Exception e){
+              errln("DateTimePatternGenerator.getBaseSkeletons(Map) was suppose to " +
+                      "return a new LinkedHashMap for a null parameter.");
+          }
+          
+          // Tests when "if (result == null)" is false
+          Set<String> mm = new HashSet<String>();
+          try{
+              dtpg.getBaseSkeletons(mm);
+          } catch(Exception e){
+              errln("DateTimePatternGenerator.getBaseSkeletons(Map) was suppose to " +
+                      "return a new LinkedHashMap for a HashSet parameter.");
+          }
+      }
+      
+      /* Tests the method
+       *        public String getDecimal()
+       */
+      public void TestGetDecimal(){
+          DateTimePatternGenerator dtpg = DateTimePatternGenerator.getInstance();
+          if(!dtpg.getDecimal().equals(".")){
+              errln("DateTimePatternGenerator.getDecimal() was to return '.' " +
+                      "when the object gets a new instance.");
+          }
+          
+          String[] cases = {",","-","","*","&","a","0"};
+          for(int i=0; i<cases.length; i++){
+              dtpg.setDecimal(cases[i]);
+              if(!dtpg.getDecimal().equals(cases[i])){
+                  errln("DateTimePatternGenerator.getDecimal() was to return " + cases[i] +
+                          "when setting decimal with " + cases[i]);
+              }
+          }
+      }
+      
+      /* Tests the method
+       *        public Collection<String> getRedundants(Collection<String> output)
+       */
+      public void TestGetRedundants(){
+          DateTimePatternGenerator dtpg = DateTimePatternGenerator.getInstance();
+          
+          // Tests when "if (output == null)" is true
+          try{
+              dtpg.getRedundants(null);
+          } catch(Exception e){
+              errln("DateTimeGenerator.getRedundants was not suppose to return " +
+                      "an exception when passing a null parameter.");
+          }
+          
+          // Tests when "if (output == null)" is false
+          try{
+              Collection<String> out = new LinkedHashSet<String>();
+              dtpg.getRedundants(out);
+          } catch(Exception e){
+              errln("DateTimeGenerator.getRedundants was not suppose to return " +
+                  "an exception when passing a new LinkedHashSet<String>() parameter.");
+          }
+          
+      }
+      
+      /* Tests the method
+       *        public String getAppendItemFormat(int field)
+       */
+      public void TestGetAppendItemFormat(){
+          DateTimePatternGenerator dtpg = DateTimePatternGenerator.getInstance();
+          String[] cases = {"d","u","m","m","y"};
+          for(int i=0; i<cases.length; i++){
+              dtpg.setAppendItemFormat(i, cases[i]);
+              if(!dtpg.getAppendItemFormat(i).equals(cases[i])){
+                  errln("DateTimePatternGeneratorgetAppendItemFormat(int field) " +
+                          "did not return as expected. Value set at " + i + " was " +
+                          cases[i] + " but got back " + dtpg.getAppendItemFormat(i));
+              }
+          }
+      }
+      
+      /* Tests the method
+       *    public String getAppendItemName(int field)
+       */
+      public void TestGetAppendItemName(){
+          DateTimePatternGenerator dtpg = DateTimePatternGenerator.getInstance();
+          String[] cases = {"d","u","m","m","y"};
+          for(int i=0; i<cases.length; i++){
+              dtpg.setAppendItemName(i, cases[i]);
+              if(!dtpg.getAppendItemName(i).equals(cases[i])){
+                  errln("DateTimePatternGenerator.getAppendItemFormat(int field) " +
+                          "did not return as expected. Value set at " + i + " was " +
+                          cases[i] + " but got back " + dtpg.getAppendItemName(i));
+              }
+          }
+      }
+      
+      /* Tests the method
+       *    public static boolean isSingleField(String skeleton)
+       */
+      @SuppressWarnings("static-access")
+    public void TestIsSingleField(){
+          DateTimePatternGenerator dtpg = DateTimePatternGenerator.getInstance();
+          String[] cases = {" ", "m","mm","md","mmd","mmdd"};
+          boolean[] results = {true,true,true,false,false,false};
+          for(int i=0; i<cases.length; i++){
+              if(dtpg.isSingleField(cases[i]) != results[i]){
+                  errln("DateTimePatternGenerator.isSingleField(String skeleton) " +
+                          "did not return as expected. Value passed was " + cases[i] +
+                          " but got back " + dtpg.isSingleField(cases[i]));
+              }
+          }
+      }
+      
+      /* Tests the method
+       *    public Object freeze()
+       *    public Object cloneAsThawed()
+       */
+      public void TestFreezeAndCloneAsThawed(){
+          DateTimePatternGenerator dtpg = DateTimePatternGenerator.getInstance();
+          
+          if(dtpg.isFrozen() != false){
+              errln("DateTimePatternGenerator.isFrozen() is suppose to return false " +
+                      "for a DateTimePatternGenerator object that was just " +
+                      "created.");
+          }
+          
+          dtpg.freeze();
+          if(dtpg.isFrozen() != true){
+              errln("DateTimePatternGenerator.isFrozen() is suppose to return true " +
+                      "for a DateTimePatternGenerator object that was just " +
+                      "created and freeze.");
+          }
+          
+          DateTimePatternGenerator dtpg2 = (DateTimePatternGenerator) dtpg.cloneAsThawed();
+          if(dtpg.isFrozen() != false){
+              errln("DateTimePatternGenerator.isFrozen() is suppose to return false " +
+                      "for a DateTimePatternGenerator object that was just " +
+                      "clone as thawed.");
+          }
+          if(dtpg2.isFrozen() != false){
+              errln("DateTimePatternGenerator.isFrozen() is suppose to return false " +
+                      "for a second DateTimePatternGenerator object that was just " +
+                      "clone as thawed.");
+          }
+      }
+      
+      /* Tests the method
+       *    public Object clone()
+       */
+      public void TestClone(){
+          DateTimePatternGenerator dtpg = DateTimePatternGenerator.getInstance();
+          DateTimePatternGenerator dtpg2 = (DateTimePatternGenerator) dtpg.clone();
+          dtpg = (DateTimePatternGenerator) dtpg2.clone();
+      }
+      
+      /* Tests the constructor
+       *    public VariableField(String string)
+       */
+      @SuppressWarnings("unused")
+      public void TestVariableField_String(){
+          String[] cases = {"d","mm","aa"};
+          String[] invalid = {null,"","dummy"};
+          for(int i=0; i<cases.length; i++){
+              try{
+                  VariableField vf = new VariableField(cases[i]);
+              } catch(Exception e){
+                  errln("VariableField constructor was not suppose to return " +
+                  "an exception when created when passing " + cases[i]);
+              }
+          }
+          for(int i=0; i<invalid.length; i++){
+              try{
+                VariableField vf = new VariableField(invalid[i]);
+                  errln("VariableField constructor was suppose to return " +
+                          "an exception when created when passing " + invalid[i]);
+              } catch(Exception e){}
+          }
+      }
+      
+      /* Tests the method
+       *    public FormatParser set(String string, boolean strict)
+       */
+      public void TestSet(){
+          FormatParser fp = new FormatParser();
+          //Tests when "if (string.length() == 0)" is true
+          try{
+              fp.set("",true);
+          }catch(Exception e){
+              errln("FormatParser.set(String,boolean) was not suppose to " +
+                      "return an exception.");
+          }
+      }
+      
+      /* Tests the method
+       *    public String toString()
+       */
+      public void TestToString(){
+          FormatParser fp = new FormatParser();
+          if(!fp.toString().equals("")){
+              errln("FormatParser.toString() was suppose to return an " +
+                      "empty string for a new FormatParser object.");
+          }
+          
+          String[] cases = {"m","d","y","mm","mmm","mm dd","mm':'dd","mm-dd-yyyy"};
+          String[] results = {"m","d","y","mm","mmm","mm dd","mm:dd","mm-dd-yyyy"};
+          for(int i=0; i<cases.length; i++){
+              fp.set(cases[i]);
+              if(!fp.toString().equals(results[i])){
+                  errln("FormatParser.toString() was suppose to return " + results[i] + 
+                  " after setting the object. Got: " + fp.toString());
+              }
+          }
+      }
+      
+      /* Tests the method
+       *    public boolean hasDateAndTimeFields()
+       */
+      public void TestHasDateAndTimeFields(){
+          FormatParser fp = new FormatParser();
+          if(fp.hasDateAndTimeFields() != false){
+              errln("FormatParser.hasDateAndTimeFields() was suppose to return " +
+                      "false when a new object is created.");
+          }
+          
+          String[] cases = {"MMDDYY", "HHMMSS", "", "MM/DD/YYYY HH:MM:SS",
+                  "MMDDYY HHMMSS", "HHMMSS MMDDYYYY", "HMS MDY"};
+          boolean[] results = {false,true,false,true,true,true,true};
+          for(int i=0; i<cases.length; i++){
+              fp.set(cases[i]);
+              if(fp.hasDateAndTimeFields() != results[i]){
+                  errln("FormatParser.hasDateAndTimeFields() was suppose to " +
+                          "return " + results[i] + " but returned " +
+                          fp.hasDateAndTimeFields() + " for parameter " + 
+                          cases[i] + " that is set to FormatParser.");
+              }
+          }
+      }
+      
+      /* Tests the method
+       *    private void checkFrozen()
+       * from public void setDateTimeFormat(String dateTimeFormat)
+       */
+      public void TestCheckFrozen(){
+          // Tests when "if (isFrozen())" is true
+          DateTimePatternGenerator dt = DateTimePatternGenerator.getInstance();
+          try{
+              dt.freeze();
+              dt.setDateTimeFormat("MMDDYYYY");
+              errln("DateTimePatternGenerator.checkFrozen() was suppose to " +
+                      "return an exception when trying to setDateTimeFormat " +
+                      "for a frozen object.");
+          } catch(Exception e){}
+          dt = (DateTimePatternGenerator) dt.cloneAsThawed();
+      }
+      
+      /* Tests the method
+       *    public String getFields(String pattern)
+       */
+      public void TestGetFields(){
+          DateTimePatternGenerator dt = DateTimePatternGenerator.getInstance();
+          String[] cases = {"MMDDYY", "HHMMSS", "", "MM/DD/YYYY HH:MM:SS",
+                  "MMDDYY HHMMSS", "HHMMSS MMDDYYYY", "HMS MDY"};
+          String[] results = {"{Month:N}{Day_Of_Year:N}{Year:N}",
+                  "{Hour:N}{Month:N}{Fractional_Second:N}","",
+                  "{Month:N}/{Day_Of_Year:N}/{Year:N} {Hour:N}:{Month:N}:{Fractional_Second:N}",
+                  "{Month:N}{Day_Of_Year:N}{Year:N} {Hour:N}{Month:N}{Fractional_Second:N}",
+                  "{Hour:N}{Month:N}{Fractional_Second:N} {Month:N}{Day_Of_Year:N}{Year:N}",
+                  "{Hour:N}{Month:N}{Fractional_Second:N} {Month:N}{Day_Of_Year:N}{Year:N}"};
+          for(int i=0; i<cases.length; i++){
+              try{
+                  if(!dt.getFields(cases[i]).equals(results[i]));
+              } catch(Exception e){
+                  errln("DateTimePatternGenerator.getFields(String) did not " +
+                          "not return an expected result when passing " + cases[i] +
+                          ". Got " + dt.getFields(cases[i]) + " but expected " +
+                          results[i]);
+              }
+          }
+      }
+
+      /*
+       * Test case for DateFormatPatternGenerator threading problem #7169
+       */
+      public void TestT7169() {
+          Thread[] workers = new Thread[10];
+          for (int i = 0 ; i < workers.length; i++) {
+              workers[i] = new Thread(new Runnable() {
+                  public void run() {
+                      try {
+                          for (int i = 0; i < 50; i++) {
+                              DateTimePatternGenerator patternGenerator =
+                                  DateTimePatternGenerator.getFrozenInstance(ULocale.US);
+                              patternGenerator.getBestPattern("MMMMd");
+                          }
+                      } catch (Exception e) {
+                          errln("FAIL: Caught an exception (frozen)" + e);
+                      }
+                      try {
+                          for (int i = 0; i < 50; i++) {
+                              DateTimePatternGenerator patternGenerator =
+                                  DateTimePatternGenerator.getInstance(ULocale.US);
+                              patternGenerator.getBestPattern("MMMMd");
+                          }
+                      } catch (Exception e) {
+                          errln("FAIL: Caught an exception " + e);
+                      }
+                  }
+              });
+          }
+          for (Thread wk : workers) {
+              wk.start();
+          }
+          for (Thread wk : workers) {
+              try {
+                  wk.join();
+              } catch (InterruptedException ie) {
+                  
+              }
+          }
+      }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormat.java b/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormat.java
new file mode 100644
index 0000000..e0cd6e2
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPI.java b/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPI.java
new file mode 100644
index 0000000..b6e8f86
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPIC.java b/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormatAPIC.java
new file mode 100644
index 0000000..21467c6
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormatSymbols.java b/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDateFormatSymbols.java
new file mode 100644
index 0000000..a0882f0
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java b/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java
new file mode 100644
index 0000000..642767b
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPI.java
@@ -0,0 +1,393 @@
+/*****************************************************************************************
+ *
+ *   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 java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Locale;
+
+import com.ibm.icu.math.BigDecimal;
+import com.ibm.icu.math.MathContext;
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.text.NumberFormat;
+
+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");
+        }
+    }
+
+    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());
+        }
+    }
+
+    public void testJB4971()
+    {
+        DecimalFormat decfmt = new DecimalFormat();
+        MathContext resultICU;
+
+        MathContext comp1 = new MathContext(0, MathContext.PLAIN);
+        resultICU = decfmt.getMathContextICU();
+        if ((comp1.getDigits() != resultICU.getDigits()) ||
+            (comp1.getForm() != resultICU.getForm()) ||
+            (comp1.getLostDigits() != resultICU.getLostDigits()) ||
+            (comp1.getRoundingMode() != resultICU.getRoundingMode()))
+        {
+            errln("ERROR: Math context 1 not equal - result: " + resultICU.toString() +
+                " / expected: " + comp1.toString());
+        }
+
+        MathContext comp2 = new MathContext(5, MathContext.ENGINEERING);
+        decfmt.setMathContextICU(comp2);
+        resultICU = decfmt.getMathContextICU();
+        if ((comp2.getDigits() != resultICU.getDigits()) ||
+            (comp2.getForm() != resultICU.getForm()) ||
+            (comp2.getLostDigits() != resultICU.getLostDigits()) ||
+            (comp2.getRoundingMode() != resultICU.getRoundingMode()))
+        {
+            errln("ERROR: Math context 2 not equal - result: " + resultICU.toString() +
+                " / expected: " + comp2.toString());
+        }
+
+        java.math.MathContext result;
+
+        java.math.MathContext comp3 = new java.math.MathContext(3, java.math.RoundingMode.DOWN);
+        decfmt.setMathContext(comp3);
+        result = decfmt.getMathContext();
+        if ((comp3.getPrecision() != result.getPrecision()) ||
+            (comp3.getRoundingMode() != result.getRoundingMode()))
+        {
+            errln("ERROR: Math context 3 not equal - result: " + result.toString() +
+                " / expected: " + comp3.toString());
+        }
+
+    }
+
+    public void testJB6354()
+    {
+        DecimalFormat pat = new DecimalFormat("#,##0.00");
+
+        // get default rounding increment
+        java.math.BigDecimal r1 = pat.getRoundingIncrement();
+
+        // set rounding mode with zero increment.  Rounding 
+        // increment should be set by this operation
+        pat.setRoundingMode(BigDecimal.ROUND_UP);
+        java.math.BigDecimal r2 = pat.getRoundingIncrement();
+
+        // check for different values
+        if ((r1 != null) && (r2 != null))
+        {
+            if (r1.compareTo(r2) == 0)
+            {
+                errln("ERROR: Rounding increment did not change");
+            }
+        }
+    }
+    
+    public void testJB6648()
+    {
+        DecimalFormat df = new DecimalFormat();
+        df.setParseStrict(true);
+        
+        String numstr = new String();
+        
+        String[] patterns = {
+            "0",
+            "00",
+            "000",
+            "0,000",
+            "0.0",
+            "#000.0"          
+        };
+        
+        for(int i=0; i < patterns.length; i++) {
+            df.applyPattern(patterns[i]);
+            numstr = df.format(5);        
+            try {
+                Number n = df.parse(numstr);
+                logln("INFO: Parsed " + numstr + " -> " + n);
+            } catch (ParseException pe) {
+                errln("ERROR: Failed round trip with strict parsing.");
+            }           
+        }
+        
+        df.applyPattern(patterns[1]);
+        numstr = "005";        
+        try {
+            Number n = df.parse(numstr);
+            errln("ERROR: Expected round trip failure not encountered: numstr -> " + n);
+        } catch (ParseException pe) {
+            logln("INFO: Expected ParseExpection for " + numstr + " with strick parse enabled");
+        }  
+        
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java b/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
new file mode 100644
index 0000000..ddedcea
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatAPIC.java
@@ -0,0 +1,513 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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 = "";
+        }
+    }
+
+    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));
+        }
+    } 
+
+    /*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/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbols.java b/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbols.java
new file mode 100644
index 0000000..1159854
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbols.java
@@ -0,0 +1,184 @@
+/*****************************************************************************************
+ *
+ *   Copyright (C) 1996-2009, 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");
+        }
+        
+        // Test CurrencySpacing.
+        // In CLDR 1.7, only root.txt has CurrencySpacing data. This data might 
+        // be different between en and fr in the future.
+        for (int i = DecimalFormatSymbols.CURRENCY_SPC_CURRENCY_MATCH; i <= DecimalFormatSymbols.CURRENCY_SPC_INSERT; i++) {
+            if (en.getPatternForCurrencySpacing(i, true) !=
+                fr.getPatternForCurrencySpacing(i, true)) {
+                errln("ERROR: get currency spacing item:"+ i+" before the currency");
+                if (en.getPatternForCurrencySpacing(i, false) !=
+                    fr.getPatternForCurrencySpacing(i, false)) {
+                    errln("ERROR: get currency spacing item:" + i + " after currency");
+                }
+            }
+        }
+        
+        String dash = "-";
+        en.setPatternForCurrencySpacing(DecimalFormatSymbols.CURRENCY_SPC_INSERT, true, dash);
+        if (dash != en.getPatternForCurrencySpacing(DecimalFormatSymbols.CURRENCY_SPC_INSERT, true)) {
+            errln("ERROR: set currency spacing pattern for before currency.");
+        }
+
+        //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/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbolsC.java b/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestDecimalFormatSymbolsC.java
new file mode 100644
index 0000000..7f782a3
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestNumberFormat.java b/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestNumberFormat.java
new file mode 100644
index 0000000..366278d
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestNumberFormatAPI.java b/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestNumberFormatAPI.java
new file mode 100644
index 0000000..d397546
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestNumberFormatAPI.java
@@ -0,0 +1,226 @@
+/*****************************************************************************************
+ *
+ *   Copyright (C) 1996-2009, 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 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 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;}
+            public StringBuffer format(java.math.BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {return null;}
+            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/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestSimpleDateFormatAPI.java b/main/tests/core/src/com/ibm/icu/dev/test/format/IntlTestSimpleDateFormatAPI.java
new file mode 100644
index 0000000..5601f46
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/format/MessageRegression.java b/main/tests/core/src/com/ibm/icu/dev/test/format/MessageRegression.java
new file mode 100644
index 0000000..08f4d1a
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatRegistrationTest.java b/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatRegistrationTest.java
new file mode 100644
index 0000000..c0381b3
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatRegressionTest.java b/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatRegressionTest.java
new file mode 100644
index 0000000..6b491fb
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatRegressionTest.java
@@ -0,0 +1,329 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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 java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.util.Calendar;
+import com.ibm.icu.util.ULocale;
+
+/** 
+ * 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{
+        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());
+            }
+        }
+    }
+
+    /*
+     * 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/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java b/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java
new file mode 100644
index 0000000..b269130
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatSerialTestData.java b/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatSerialTestData.java
new file mode 100644
index 0000000..f3d7a49
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTest.java b/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTest.java
new file mode 100644
index 0000000..22e6a93
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTest.java
@@ -0,0 +1,2556 @@
+/*
+ *******************************************************************************
+ * 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 java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.ArrayList;
+import java.util.Locale;
+import java.util.Set;
+
+import com.ibm.icu.dev.test.TestUtil;
+import com.ibm.icu.impl.LocaleUtility;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.data.ResourceReader;
+import com.ibm.icu.impl.data.TokenIterator;
+import com.ibm.icu.math.BigDecimal;
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.text.MeasureFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.NumberFormat.NumberFormatFactory;
+import com.ibm.icu.text.NumberFormat.SimpleNumberFormatFactory;
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.util.CurrencyAmount;
+import com.ibm.icu.util.ULocale;
+
+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"}, TODO: OK or NOT?
+            {"124 $", "0", "3"}, 
+        };
+        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]);
+          try {
+            Number result = foo.parse(stringToBeParsed, parsePosition);
+            if (parsePosition.getIndex() != parsedPosition ||
+                parsePosition.getErrorIndex() != errorIndex) {
+                errln("FAILED parse " + stringToBeParsed + "; parse position: " + parsePosition.getIndex() + "; error position: " + parsePosition.getErrorIndex());
+            }
+            if (parsePosition.getErrorIndex() == -1 &&
+                result.doubleValue() != 124) {
+                errln("FAILED parse " + stringToBeParsed + "; value " + result.doubleValue());
+            }
+          } catch (Exception e) {
+              errln("FAILED " + e.toString());
+          }
+        }
+    }
+
+
+    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 = pat.replaceAll("\u00A4", doubleCurrencyStr);
+                } else if (j == 3) {
+                    pat = pat.replaceAll("\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", "Rs\u00A01,00", "INR\u00A01,00", "1,00 rupia india"},
+            {"ar_EG", "1", "USD", "US$\u00A0\u0661\u066B\u0660\u0660", "USD\u00a0\u0661\u066b\u0660\u0660", "\u0661\u066b\u0660\u0660 \u062f\u0648\u0644\u0627\u0631 \u0623\u0645\u0631\u064a\u0643\u064a"},
+        };
+        
+        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());
+            }
+          }  
+        }
+    }
+
+
+    public void TestMiscCurrencyParsing() {
+        String[][] DATA = {
+            // each has: string to be parsed, parsed position, error position
+            {"1.00 ", "0", "4"},
+            {"1.00 UAE dirha", "0", "4"},
+            {"1.00 us dollar", "14", "-1"},
+            {"1.00 US DOLLAR", "14", "-1"},
+            {"1.00 usd", "0", "4"},
+        };
+        ULocale locale = new ULocale("en_US");
+        for (int i=0; i<DATA.length; ++i) {
+            String stringToBeParsed = DATA[i][0];
+            int parsedPosition = Integer.parseInt(DATA[i][1]);
+            int errorIndex = Integer.parseInt(DATA[i][2]);
+            NumberFormat numFmt = NumberFormat.getInstance(locale, NumberFormat.CURRENCYSTYLE);
+            ParsePosition parsePosition = new ParsePosition(0);
+            Number val = numFmt.parse(stringToBeParsed, parsePosition);
+            if (parsePosition.getIndex() != parsedPosition ||
+                parsePosition.getErrorIndex() != errorIndex) {
+                errln("FAIL: parse failed. expected error position: " + errorIndex + "; actual: " + parsePosition.getErrorIndex());
+                errln("FAIL: parse failed. expected position: " + parsedPosition +"; actual: " + parsePosition.getIndex());
+            }
+            if (parsePosition.getErrorIndex() == -1 &&
+                val.doubleValue() != 1.00) {
+                errln("FAIL: parse failed. expected 1.00, actual:" + val);
+            }
+        }
+    }
+
+
+    /**
+     * 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 CHF"); // 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, "*&' Rs '&* 1.00");
+        expect2(df, -2.0, "-*&' Rs '&* 2.00");
+        df.applyPattern("#,##0.00 '*&'' '\u00A4' ''&*'");
+        expect2(df, 2.0, "2.00 *&' Rs '&*");
+        expect2(df, -1.0, "-1.00 *&' Rs '&*");
+
+        java.math.BigDecimal r = df.getRoundingIncrement();
+        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() {
+//  CLDR No Longer uses complex currency symbols.
+//  Skipping this test.
+//        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);
+    }
+    }
+
+    /**
+     * Test alternate numbering systems
+     */
+    public void TestNumberingSystems() {
+
+        ULocale loc1 = new ULocale("en_US@numbers=thai");
+        ULocale loc2 = new ULocale("en_US@numbers=hebr");
+        ULocale loc3 = new ULocale("en_US@numbers=arabext");
+        ULocale loc4 = new ULocale("hi_IN@numbers=foobar");
+        
+        NumberFormat fmt1 = NumberFormat.getInstance(loc1);
+        NumberFormat fmt2 = NumberFormat.getInstance(loc2);
+        NumberFormat fmt3 = NumberFormat.getInstance(loc3);
+        NumberFormat fmt4 = NumberFormat.getInstance(loc4);
+        
+        expect2(fmt1,1234.567,"\u0e51,\u0e52\u0e53\u0e54.\u0e55\u0e56\u0e57");
+        expect3(fmt2,5678.0,"\u05d4\u05f3\u05ea\u05e8\u05e2\u05f4\u05d7");
+        expect2(fmt3,1234.567,"\u06f1,\u06f2\u06f3\u06f4.\u06f5\u06f6\u06f7");
+        expect2(fmt4,1234.567,"\u0967,\u0968\u0969\u096a.\u096b\u096c\u096d");
+
+    }
+
+    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) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    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) {
+        nf.setRoundingIncrement(increment.toBigDecimal());
+        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)
+            : number instanceof java.math.BigDecimal ? new BigDecimal((java.math.BigDecimal)number)
+            : 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
+    public void expect3(NumberFormat fmt, Number n, String exp) {
+        // Don't round-trip format test, since we explicitly do it
+        expect_rbnf(fmt, n, exp, false);
+        expect_rbnf(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 expect3(NumberFormat fmt, double n, String exp) {
+        expect3(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-Parse test (convenience)
+    public void expect3(NumberFormat fmt, long n, String exp) {
+        expect3(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
+    public void expect_rbnf(NumberFormat fmt, Number n, String exp, boolean rt) {
+        StringBuffer saw = new StringBuffer();
+        FieldPosition pos = new FieldPosition(0);
+        fmt.format(n, saw, pos);
+        if (saw.toString().equals(exp)) {
+            logln("Ok   " + n + " = \"" +
+                  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 + " = \"" +
+                  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
+    public void expect_rbnf(NumberFormat fmt, String str, Number n) {
+        Number num = null;
+        try {
+            num = (Number) fmt.parse(str);
+        } catch (ParseException e) {
+            errln(e.getMessage());
+            return;
+        }
+        // A little tricky here -- make sure Double(12345.0) and
+        // Long(12345) match.
+        if (num.equals(n) || num.doubleValue() == n.doubleValue()) {
+            logln("Ok   \"" + str + " = " +
+                  num);
+        } else {
+            errln("FAIL \"" + str + " = " +
+                  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());
+
+        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());
+    }
+
+    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()));
+                    }
+                }
+            }
+        }
+    }
+    
+    public void TestSetCurrency() {
+        DecimalFormatSymbols decf1 = DecimalFormatSymbols.getInstance(ULocale.US);
+        DecimalFormatSymbols decf2 = DecimalFormatSymbols.getInstance(ULocale.US);
+        decf2.setCurrencySymbol("UKD");
+        DecimalFormat format1 = new DecimalFormat("000.000", decf1);
+        DecimalFormat format2 = new DecimalFormat("000.000", decf2);
+        Currency euro = Currency.getInstance("EUR");
+        format1.setCurrency(euro);
+        format2.setCurrency(euro);
+        assertEquals("Reset with currency symbol", format1, format2);
+    }
+    
+    /*
+     * Testing the method public StringBuffer format(Object number, ...)
+     */
+    public void TestFormat() {
+        NumberFormat nf = NumberFormat.getInstance();
+        StringBuffer sb = new StringBuffer("dummy");
+        FieldPosition fp = new FieldPosition(0);
+
+        // Tests when "if (number instanceof Long)" is true
+        try {
+            nf.format((Object)new Long("0"), sb, fp);
+        } catch (Exception e) {
+            errln("NumberFormat.format(Object number, ...) was not suppose to "
+                    + "return an exception for a Long object. Error: " + e);
+        }
+
+        // Tests when "else if (number instanceof BigInteger)" is true
+        try {
+            nf.format((Object)new BigInteger("0"), sb, fp);
+        } catch (Exception e) {
+            errln("NumberFormat.format(Object number, ...) was not suppose to "
+                    + "return an exception for a BigInteger object. Error: " + e);
+        }
+
+        // Tests when "else if (number instanceof java.math.BigDecimal)" is true
+        try {
+            nf.format((Object)new java.math.BigDecimal("0"), sb, fp);
+        } catch (Exception e) {
+            errln("NumberFormat.format(Object number, ...) was not suppose to "
+                    + "return an exception for a java.math.BigDecimal object. Error: " + e);
+        }
+
+        // Tests when "else if (number instanceof com.ibm.icu.math.BigDecimal)" is true
+        try {
+            nf.format((Object)new com.ibm.icu.math.BigDecimal("0"), sb, fp);
+        } catch (Exception e) {
+            errln("NumberFormat.format(Object number, ...) was not suppose to "
+                    + "return an exception for a com.ibm.icu.math.BigDecimal object. Error: " + e);
+        }
+
+        // Tests when "else if (number instanceof CurrencyAmount)" is true
+        try {
+            CurrencyAmount ca = new CurrencyAmount(0.0, Currency.getInstance(new ULocale("en_US")));
+            nf.format((Object)ca, sb, fp);
+        } catch (Exception e) {
+            errln("NumberFormat.format(Object number, ...) was not suppose to "
+                    + "return an exception for a CurrencyAmount object. Error: " + e);
+        }
+
+        // Tests when "else if (number instanceof Number)" is true
+        try {
+            nf.format((Object)(Number) 0.0, sb, fp);
+        } catch (Exception e) {
+            errln("NumberFormat.format(Object number, ...) was not suppose to "
+                    + "to return an exception for a Number object. Error: " + e);
+        }
+
+        // Tests when "else" is true
+        try {
+            nf.format(new Object(), sb, fp);
+            errln("NumberFormat.format(Object number, ...) was suppose to "
+                    + "return an exception for an invalid object.");
+        } catch (Exception e) {
+        }
+
+        try {
+            nf.format(new String("dummy"), sb, fp);
+            errln("NumberFormat.format(Object number, ...) was suppose to "
+                    + "return an exception for an invalid object.");
+        } catch (Exception e) {
+        }
+    }
+
+    /*
+     * Tests the method public final static NumberFormat getInstance(int style) public static NumberFormat
+     * getInstance(Locale inLocale, int style) public static NumberFormat getInstance(ULocale desiredLocale, int choice)
+     */
+    public void TestGetInstance() {
+        // Tests "public final static NumberFormat getInstance(int style)"
+
+        int[] invalid_cases = { NumberFormat.NUMBERSTYLE - 1, NumberFormat.NUMBERSTYLE - 2,
+                NumberFormat.PLURALCURRENCYSTYLE + 1, NumberFormat.PLURALCURRENCYSTYLE + 2 };
+
+        for (int i = NumberFormat.NUMBERSTYLE; i < NumberFormat.PLURALCURRENCYSTYLE; i++) {
+            try {
+                NumberFormat.getInstance(i);
+            } catch (Exception e) {
+                errln("NumberFormat.getInstance(int style) was not suppose to "
+                        + "return an exception for passing value of " + i);
+            }
+        }
+
+        for (int i = 0; i < invalid_cases.length; i++) {
+            try {
+                NumberFormat.getInstance(invalid_cases[i]);
+                errln("NumberFormat.getInstance(int style) was suppose to "
+                        + "return an exception for passing value of " + invalid_cases[i]);
+            } catch (Exception e) {
+            }
+        }
+
+        // Tests "public static NumberFormat getInstance(Locale inLocale, int style)"
+        String[] localeCases = { "en_US", "fr_FR", "de_DE", "jp_JP" };
+
+        for (int i = NumberFormat.NUMBERSTYLE; i < NumberFormat.PLURALCURRENCYSTYLE; i++) {
+            for (int j = 0; j < localeCases.length; j++) {
+                try {
+                    NumberFormat.getInstance(new Locale(localeCases[j]), i);
+                } catch (Exception e) {
+                    errln("NumberFormat.getInstance(Locale inLocale, int style) was not suppose to "
+                            + "return an exception for passing value of " + localeCases[j] + ", " + i);
+                }
+            }
+        }
+
+        // Tests "public static NumberFormat getInstance(ULocale desiredLocale, int choice)"
+        // Tests when "if (choice < NUMBERSTYLE || choice > PLURALCURRENCYSTYLE)" is true
+        for (int i = 0; i < invalid_cases.length; i++) {
+            try {
+                NumberFormat.getInstance((ULocale) null, invalid_cases[i]);
+                errln("NumberFormat.getInstance(ULocale inLocale, int choice) was not suppose to "
+                        + "return an exception for passing value of " + invalid_cases[i]);
+            } catch (Exception e) {
+            }
+        }
+    }
+
+    /*
+     * Tests the class public static abstract class NumberFormatFactory
+     */
+    public void TestNumberFormatFactory() {
+        /*
+         * The following class allows the method public NumberFormat createFormat(Locale loc, int formatType) to be
+         * tested.
+         */
+        class TestFactory extends NumberFormatFactory {
+            public Set<String> getSupportedLocaleNames() {
+                return null;
+            }
+
+            public NumberFormat createFormat(ULocale loc, int formatType) {
+                return null;
+            }
+        }
+
+        /*
+         * The following class allows the method public NumberFormat createFormat(ULocale loc, int formatType) to be
+         * tested.
+         */
+        class TestFactory1 extends NumberFormatFactory {
+            public Set<String> getSupportedLocaleNames() {
+                return null;
+            }
+
+            public NumberFormat createFormat(Locale loc, int formatType) {
+                return null;
+            }
+        }
+
+        TestFactory tf = new TestFactory();
+        TestFactory1 tf1 = new TestFactory1();
+
+        /*
+         * Tests the method public boolean visible()
+         */
+        if (tf.visible() != true) {
+            errln("NumberFormatFactor.visible() was suppose to return true.");
+        }
+
+        /*
+         * Tests the method public NumberFormat createFormat(Locale loc, int formatType)
+         */
+        if (tf.createFormat(new Locale(""), 0) != null) {
+            errln("NumberFormatFactor.createFormat(Locale loc, int formatType) " + "was suppose to return null");
+        }
+
+        /*
+         * Tests the method public NumberFormat createFormat(ULocale loc, int formatType)
+         */
+        if (tf1.createFormat(new ULocale(""), 0) != null) {
+            errln("NumberFormatFactor.createFormat(ULocale loc, int formatType) " + "was suppose to return null");
+        }
+    }
+
+    /*
+     * Tests the class public static abstract class SimpleNumberFormatFactory extends NumberFormatFactory
+     */
+    public void TestSimpleNumberFormatFactory() {
+        class TestSimpleNumberFormatFactory extends SimpleNumberFormatFactory {
+            /*
+             * Tests the method public SimpleNumberFormatFactory(Locale locale)
+             */
+            TestSimpleNumberFormatFactory() {
+                super(new Locale(""));
+            }
+        }
+        @SuppressWarnings("unused")
+        TestSimpleNumberFormatFactory tsnff = new TestSimpleNumberFormatFactory();
+    }
+
+    /*
+     * Tests the method public static ULocale[] getAvailableLocales()
+     */
+    @SuppressWarnings("static-access")
+    public void TestGetAvailableLocales() {
+        // Tests when "if (shim == null)" is true
+        @SuppressWarnings("serial")
+        class TestGetAvailableLocales extends NumberFormat {
+            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;
+            }
+
+            public StringBuffer format(java.math.BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {
+                return null;
+            }
+
+            public StringBuffer format(BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {
+                return null;
+            }
+
+            public Number parse(String text, ParsePosition parsePosition) {
+                return null;
+            }
+        }
+
+        try {
+            TestGetAvailableLocales test = new TestGetAvailableLocales();
+            test.getAvailableLocales();
+        } catch (Exception e) {
+            errln("NumberFormat.getAvailableLocales() was not suppose to "
+                    + "return an exception when getting getting available locales.");
+        }
+    }
+
+    /*
+     * Tests the method public void setMinimumIntegerDigits(int newValue)
+     */
+    public void TestSetMinimumIntegerDigits() {
+        NumberFormat nf = NumberFormat.getInstance();
+        // For valid array, it is displayed as {min value, max value}
+        // Tests when "if (minimumIntegerDigits > maximumIntegerDigits)" is true
+        int[][] cases = { { -1, 0 }, { 0, 1 }, { 1, 0 }, { 2, 0 }, { 2, 1 }, { 10, 0 } };
+        int[] expectedMax = { 0, 1, 1, 2, 2, 10 };
+        if (cases.length != expectedMax.length) {
+            errln("Can't continue test case method TestSetMinimumIntegerDigits "
+                    + "since the test case arrays are unequal.");
+        } else {
+            for (int i = 0; i < cases.length; i++) {
+                nf.setMaximumIntegerDigits(cases[i][1]);
+                nf.setMinimumIntegerDigits(cases[i][0]);
+                if (nf.getMaximumIntegerDigits() != expectedMax[i]) {
+                    errln("NumberFormat.setMinimumIntegerDigits(int newValue "
+                            + "did not return an expected result for parameter " + cases[i][1] + " and " + cases[i][0]
+                            + " and expected " + expectedMax[i] + " but got " + nf.getMaximumIntegerDigits());
+                }
+            }
+        }
+    }
+
+    /*
+     * Tests the method protected Currency getEffectiveCurrency()
+     */
+    public void TestGetEffectiveCurrency() {
+        // TODO: Tests the method
+    }
+
+    /*
+     * Tests the method public int getRoundingMode() public void setRoundingMode(int roundingMode)
+     */
+    public void TestRoundingMode() {
+        @SuppressWarnings("serial")
+        class TestRoundingMode extends NumberFormat {
+            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;
+            }
+
+            public StringBuffer format(java.math.BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {
+                return null;
+            }
+
+            public StringBuffer format(BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {
+                return null;
+            }
+
+            public Number parse(String text, ParsePosition parsePosition) {
+                return null;
+            }
+        }
+        TestRoundingMode tgrm = new TestRoundingMode();
+
+        // Tests the function 'public void setRoundingMode(int roundingMode)'
+        try {
+            tgrm.setRoundingMode(0);
+            errln("NumberFormat.setRoundingMode(int) was suppose to return an exception");
+        } catch (Exception e) {
+        }
+
+        // Tests the function 'public int getRoundingMode()'
+        try {
+            tgrm.getRoundingMode();
+            errln("NumberFormat.getRoundingMode() was suppose to return an exception");
+        } catch (Exception e) {
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTestCases.txt b/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTestCases.txt
new file mode 100644
index 0000000..527037d
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/NumberFormatTestCases.txt
@@ -0,0 +1,122 @@
+######################################################################
+# Copyright (c) 2004, 2009 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)
+# fake ISO code is not longer supported
+# fpc: -              123/QQQ      "QQQ123.00"    123/QQQ   # QQQ is fake
+fpc: -              123/GTQ      "GTQ123.00"      123/GTQ
+# ChoiceFormat-based display names
+fpc: -              1/INR        "Rs1.00"      1/INR
+
+fpc: -              2/INR        "Rs2.00"      2/INR
+# Display names with shared prefix (YDD vs. Y)
+fpc: -              100/YDD      "YDD100.00"    100/YDD
+fpc: -              100/CNY      "CN¥100.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/main/tests/core/src/com/ibm/icu/dev/test/format/NumberRegression.java b/main/tests/core/src/com/ibm/icu/dev/test/format/NumberRegression.java
new file mode 100644
index 0000000..536792f
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/NumberRegression.java
@@ -0,0 +1,1865 @@
+/*****************************************************************************************
+ *
+ * Copyright (C) 1996-2009, 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 java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InvalidObjectException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.math.BigInteger;
+import java.text.FieldPosition;
+import java.text.ParseException;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.impl.ICUResourceBundle;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.DecimalFormat;
+import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.util.GregorianCalendar;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.VersionInfo;
+
+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]));
+            }
+        }
+    }
+
+    /**
+     * 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();
+        }
+    }
+
+    /**
+     * 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: NumberFormat serialization/equality bug");
+            } else {
+                logln("NumberFormat 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);
+    }
+    public StringBuffer format(java.math.BigDecimal number, StringBuffer toAppendTo, FieldPosition pos) {
+        return new StringBuffer("");
+    }
+    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/main/tests/core/src/com/ibm/icu/dev/test/format/PluralFormatTest.java b/main/tests/core/src/com/ibm/icu/dev/test/format/PluralFormatTest.java
new file mode 100644
index 0000000..bda08b9
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/PluralFormatTest.java
@@ -0,0 +1,266 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2009, 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.CurrencyPluralInfo;
+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);
+  }
+  
+    /* Tests the method public PluralRules getPluralRules() */
+    public void TestGetPluralRules() {
+        CurrencyPluralInfo cpi = new CurrencyPluralInfo();
+        try {
+            cpi.getPluralRules();
+        } catch (Exception e) {
+            errln("CurrencyPluralInfo.getPluralRules() was not suppose to " + "return an exception.");
+        }
+    }
+
+    /* Tests the method public ULocale getLocale() */
+    public void TestGetLocale() {
+        CurrencyPluralInfo cpi = new CurrencyPluralInfo(new ULocale("en_US"));
+        if (!cpi.getLocale().equals(new ULocale("en_US"))) {
+            errln("CurrencyPluralInfo.getLocale() was suppose to return true " + "when passing the same ULocale");
+        }
+        if (cpi.getLocale().equals(new ULocale("jp_JP"))) {
+            errln("CurrencyPluralInfo.getLocale() was not suppose to return true " + "when passing a different ULocale");
+        }
+    }
+    
+    /* Tests the method public void setLocale(ULocale loc) */
+    public void TestSetLocale() {
+        CurrencyPluralInfo cpi = new CurrencyPluralInfo();
+        cpi.setLocale(new ULocale("en_US"));
+        if (!cpi.getLocale().equals(new ULocale("en_US"))) {
+            errln("CurrencyPluralInfo.setLocale() was suppose to return true when passing the same ULocale");
+        }
+        if (cpi.getLocale().equals(new ULocale("jp_JP"))) {
+            errln("CurrencyPluralInfo.setLocale() was not suppose to return true when passing a different ULocale");
+        }
+    }
+    
+    /* Tests the method public boolean equals(Object a) */
+    public void TestEquals(){
+        CurrencyPluralInfo cpi = new CurrencyPluralInfo();
+        if(cpi.equals(0)){
+            errln("CurrencyPluralInfo.equals(Object) was not suppose to return true when comparing to an invalid object for integer 0.");
+        }
+        if(cpi.equals(0.0)){
+            errln("CurrencyPluralInfo.equals(Object) was not suppose to return true when comparing to an invalid object for float 0.");
+        }
+        if(cpi.equals("0")){
+            errln("CurrencyPluralInfo.equals(Object) was not suppose to return true when comparing to an invalid object for string 0.");
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/format/PluralFormatUnitTest.java b/main/tests/core/src/com/ibm/icu/dev/test/format/PluralFormatUnitTest.java
new file mode 100644
index 0000000..9a889a3
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/format/PluralRulesTest.java b/main/tests/core/src/com/ibm/icu/dev/test/format/PluralRulesTest.java
new file mode 100644
index 0000000..0228c79
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/PluralRulesTest.java
@@ -0,0 +1,233 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2007-2009, 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());
+    }
+    
+    /*
+     * Test the method public static PluralRules parseDescription(String description)
+     */
+    public void TestParseDescription() {
+        try {
+            if (PluralRules.DEFAULT != PluralRules.parseDescription("")) {
+                errln("PluralRules.parseDescription(String) was suppose "
+                        + "to return PluralRules.DEFAULT when String is of " + "length 0.");
+            }
+        } catch (ParseException e) {
+            errln("PluralRules.parseDescription(String) was not suppose " + "to return an exception.");
+        }
+    }
+
+    /*
+     * Tests the method public static PluralRules createRules(String description)
+     */
+    public void TestCreateRules() {
+        try {
+            if (PluralRules.createRules(null) != null) {
+                errln("PluralRules.createRules(String) was suppose to "
+                        + "return null for an invalid String descrtiption.");
+            }
+        } catch (Exception e) {
+        }
+    }
+
+    /*
+     * Tests the method public int hashCode()
+     */
+    public void TestHashCode() {
+        PluralRules pr = PluralRules.DEFAULT;
+        if (106069776 != pr.hashCode()) {
+            errln("PluralRules.hashCode() was suppose to return 106069776 " + "when PluralRules.DEFAULT.");
+        }
+    }
+
+    /*
+     * Tests the method public boolean equals(PluralRules rhs)
+     */
+    public void TestEquals() {
+        PluralRules pr = PluralRules.DEFAULT;
+
+        // Tests when if (rhs == null) is true
+        if (pr.equals((PluralRules) null)) {
+            errln("PluralRules.equals(PluralRules) was suppose to return false " + "when passing null.");
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/format/RBNFParseTest.java b/main/tests/core/src/com/ibm/icu/dev/test/format/RBNFParseTest.java
new file mode 100644
index 0000000..2bfbc81
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/RBNFParseTest.java
@@ -0,0 +1,159 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2009, 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;
+
+        // TODO: this still passes, but setLenientParseMode should have no effect now.
+        // Did it ever test what it was supposed to?
+        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/main/tests/core/src/com/ibm/icu/dev/test/format/RbnfRoundTripTest.java b/main/tests/core/src/com/ibm/icu/dev/test/format/RbnfRoundTripTest.java
new file mode 100644
index 0000000..aa8c5da
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/RbnfRoundTripTest.java
@@ -0,0 +1,219 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Greek spellout rules
+     */
+    public void TestHebrewNumberingRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("he", "IL",
+                        ""), RuleBasedNumberFormat.NUMBERING_SYSTEM);
+
+        formatter.setDefaultRuleSet("%hebrew");
+        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/main/tests/core/src/com/ibm/icu/dev/test/format/RbnfTest.java b/main/tests/core/src/com/ibm/icu/dev/test/format/RbnfTest.java
new file mode 100644
index 0000000..da7a771
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/RbnfTest.java
@@ -0,0 +1,1280 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.format;
+
+import java.math.BigInteger;
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Locale;
+import java.util.Random;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.RuleBasedNumberFormat;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * This does not test lenient parse mode, since testing the default implementation
+ * introduces a dependency on collation.  See RbnfLenientScannerTest.
+ */
+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);
+    }
+
+    /**
+     * 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", "1\u02e2\u1d57" },
+            { "2", "2\u207f\u1d48" },
+            { "3", "3\u02b3\u1d48" },
+            { "4", "4\u1d57\u02b0" },
+            { "7", "7\u1d57\u02b0" },
+            { "10", "10\u1d57\u02b0" },
+            { "11", "11\u1d57\u02b0" },
+            { "13", "13\u1d57\u02b0" },
+            { "20", "20\u1d57\u02b0" },
+            { "21", "21\u02e2\u1d57" },
+            { "22", "22\u207f\u1d48" },
+            { "23", "23\u02b3\u1d48" },
+            { "24", "24\u1d57\u02b0" },
+            { "33", "33\u02b3\u1d48" },
+            { "102", "102\u207f\u1d48" },
+            { "312", "312\u1d57\u02b0" },
+            { "12,345", "12,345\u1d57\u02b0" }
+        };
+
+        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);
+    }
+
+    /**
+     * 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);
+    }
+
+    /**
+     * 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", "venti\u00ADtr\u00E9" },
+            { "73", "settanta\u00ADtr\u00E9" },
+            { "88", "ottant\u00ADotto" },
+            { "100", "cento" },
+            { "106", "cento\u00ADsei" },
+            { "108", "cent\u00ADotto" },
+            { "127", "cento\u00ADventi\u00ADsette" },
+            { "181", "cent\u00ADottant\u00ADuno" },
+            { "200", "due\u00ADcento" },
+            { "579", "cinque\u00ADcento\u00ADsettanta\u00ADnove" },
+            { "1,000", "mille" },
+            { "2,000", "due\u00ADmila" },
+            { "3,004", "tre\u00ADmila\u00ADquattro" },
+            { "4,567", "quattro\u00ADmila\u00ADcinque\u00ADcento\u00ADsessanta\u00ADsette" },
+            { "15,943", "quindici\u00ADmila\u00ADnove\u00ADcento\u00ADquaranta\u00ADtr\u00E9" },
+            { "-36", "meno trenta\u00ADsei" },
+            { "234.567", "due\u00ADcento\u00ADtrenta\u00ADquattro 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", "drei\u00ADund\u00ADzwanzig" },
+            { "73", "drei\u00ADund\u00ADsiebzig" },
+            { "88", "acht\u00ADund\u00ADachtzig" },
+            { "100", "ein\u00ADhundert" },
+            { "106", "ein\u00ADhundert\u00ADsechs" },
+            { "127", "ein\u00ADhundert\u00ADsieben\u00ADund\u00ADzwanzig" },
+            { "200", "zwei\u00ADhundert" },
+            { "579", "f\u00fcnf\u00ADhundert\u00ADneun\u00ADund\u00ADsiebzig" },
+            { "1,000", "ein\u00ADtausend" },
+            { "2,000", "zwei\u00ADtausend" },
+            { "3,004", "drei\u00ADtausend\u00ADvier" },
+            { "4,567", "vier\u00ADtausend\u00ADf\u00fcnf\u00ADhundert\u00ADsieben\u00ADund\u00ADsechzig" },
+            { "15,943", "f\u00fcnfzehn\u00ADtausend\u00ADneun\u00ADhundert\u00ADdrei\u00ADund\u00ADvierzig" },
+            { "2,345,678", "zwei Millionen drei\u00ADhundert\u00ADf\u00fcnf\u00ADund\u00ADvierzig\u00ADtausend\u00AD"
+              + "sechs\u00ADhundert\u00ADacht\u00ADund\u00ADsiebzig" }
+        };
+
+        doTest(formatter, testData, true);
+    }
+
+    /**
+     * 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\u200b\u0e40\u0e2d\u0e47\u0e14" },
+            { "21", "\u0e22\u0e35\u0e48\u200b\u0e2a\u0e34\u0e1a\u200b\u0e40\u0e2d\u0e47\u0e14" },
+            { "101", "\u0e2b\u0e19\u0e36\u0e48\u0e07\u200b\u0e23\u0e49\u0e2d\u0e22\u200b\u0e2b\u0e19\u0e36\u0e48\u0e07" },
+            { "1.234", "\u0e2b\u0e19\u0e36\u0e48\u0e07\u200b\u0e08\u0e38\u0e14\u200b\u0e2a\u0e2d\u0e07\u0e2a\u0e32\u0e21\u0e2a\u0e35\u0e48" },
+            { "21.45", "\u0e22\u0e35\u0e48\u200b\u0e2a\u0e34\u0e1a\u200b\u0e40\u0e2d\u0e47\u0e14\u200b\u0e08\u0e38\u0e14\u200b\u0e2a\u0e35\u0e48\u0e2b\u0e49\u0e32" },
+            { "22.45", "\u0e22\u0e35\u0e48\u200b\u0e2a\u0e34\u0e1a\u200b\u0e2a\u0e2d\u0e07\u200b\u0e08\u0e38\u0e14\u200b\u0e2a\u0e35\u0e48\u0e2b\u0e49\u0e32" },
+            { "23.45", "\u0e22\u0e35\u0e48\u200b\u0e2a\u0e34\u0e1a\u200b\u0e2a\u0e32\u0e21\u200b\u0e08\u0e38\u0e14\u200b\u0e2a\u0e35\u0e48\u0e2b\u0e49\u0e32" },
+            { "123.45", "\u0e2b\u0e19\u0e36\u0e48\u0e07\u200b\u0e23\u0e49\u0e2d\u0e22\u200b\u0e22\u0e35\u0e48\u200b\u0e2a\u0e34\u0e1a\u200b\u0e2a\u0e32\u0e21\u200b\u0e08\u0e38\u0e14\u200b\u0e2a\u0e35\u0e48\u0e2b\u0e49\u0e32" },
+            { "12,345.678", "\u0E2B\u0E19\u0E36\u0E48\u0E07\u200b\u0E2B\u0E21\u0E37\u0E48\u0E19\u200b\u0E2A\u0E2D\u0E07\u200b\u0E1E\u0E31\u0E19\u200b\u0E2A\u0E32\u0E21\u200b\u0E23\u0E49\u0E2D\u0E22\u200b\u0E2A\u0E35\u0E48\u200b\u0E2A\u0E34\u0E1A\u200b\u0E2B\u0E49\u0E32\u200b\u0E08\u0E38\u0E14\u200b\u0E2B\u0E01\u0E40\u0E08\u0E47\u0E14\u0E41\u0E1B\u0E14" },
+        };
+
+        doTest(formatter, testData, true);
+    }
+
+    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", "ett\u00ADhundra\u00ADett" },
+            { "123", "ett\u00ADhundra\u00ADtjugo\u00ADtre" },
+            { "1,001", "ettusen ett" },
+            { "1,100", "ettusen ett\u00ADhundra" },
+            { "1,101", "ettusen ett\u00ADhundra\u00ADett" },
+            { "1,234", "ettusen tv\u00e5\u00ADhundra\u00ADtrettio\u00ADfyra" },
+            { "10,001", "tio\u00ADtusen ett" },
+            { "11,000", "elva\u00ADtusen" },
+            { "12,000", "tolv\u00ADtusen" },
+            { "20,000", "tjugo-tusen" },
+            { "21,000", "tjugo\u00ADett-tusen" },
+            { "21,001", "tjugo\u00ADett-tusen ett" },
+            { "200,000", "tv\u00e5\u00ADhundra-tusen" },
+            { "201,000", "tv\u00e5\u00ADhundra\u00ADett-tusen" },
+            { "200,200", "tv\u00e5\u00ADhundra-tusen tv\u00e5\u00ADhundra" },
+            { "2,002,000", "tv\u00e5 miljoner tv\u00e5\u00ADtusen" },
+            { "12,345,678", "tolv miljoner tre\u00ADhundra\u00ADfyrtio\u00ADfem-tusen sex\u00ADhundra\u00ADsjuttio\u00AD\u00e5tta" },
+            { "123,456.789", "ett\u00ADhundra\u00ADtjugo\u00ADtre-tusen fyra\u00ADhundra\u00ADfemtio\u00ADsex komma sju \u00e5tta nio" },
+            { "-12,345.678", "minus tolv\u00ADtusen tre\u00ADhundra\u00ADfyrtio\u00ADfem komma sex sju \u00e5tta" }
+        };
+
+        logln("testing default rules");
+        doTest(formatter, testDataDefault, true);
+
+        String[][] testDataNeutrum = {
+            { "101", "ett\u00adhundra\u00aden" },
+            { "1,001", "ettusen en" },
+            { "1,101", "ettusen ett\u00adhundra\u00aden" },
+            { "10,001", "tio\u00adtusen en" },
+            { "21,001", "tjugo\u00aden\u00adtusen en" }
+        };
+
+        formatter.setDefaultRuleSet("%spellout-cardinal-neutre");
+        logln("testing neutrum rules");
+        doTest(formatter, testDataNeutrum, true);
+
+        String[][] testDataYear = {
+            { "101", "ett\u00adhundra\u00adett" },
+            { "900", "nio\u00adhundra" },
+            { "1,001", "ettusen ett" },
+            { "1,100", "elva\u00adhundra" },
+            { "1,101", "elva\u00adhundra\u00adett" },
+            { "1,234", "tolv\u00adhundra\u00adtrettio\u00adfyra" },
+            { "2,001", "tjugo\u00adhundra\u00adett" },
+            { "10,001", "tio\u00adtusen ett" }
+        };
+
+        formatter.setDefaultRuleSet("%spellout-numbering-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());
+
+        buf.setLength(0);
+        java.math.BigDecimal bigD = new java.math.BigDecimal(bigI);
+        fmt.format(bigD, buf, null);
+        logln("big dec: " + buf.toString());
+    }
+
+  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();
+        String[] names = {
+            " (spellout) ",
+            " (ordinal)  ",
+            " (duration) "
+        };
+        double[] numbers = {45.678, 1, 2, 10, 11, 100, 110, 200, 1000, 1111, -1111};
+        Random r = null;
+
+        // RBNF parse is extremely slow when lenient option is enabled.
+        // For non-exhaustive mode, we only test a few locales.
+        // "nl_NL", "be" had crash problem reported by #6534
+        String[] parseLocales = {"en_US", "nl_NL", "be"};
+
+        for (int i = 0; i < locales.length; ++i) {
+            ULocale loc = locales[i];
+            int count = numbers.length;
+            boolean testParse = true;
+            if (getInclusion() <= 5) {
+                testParse = false;
+                for (int k = 0; k < parseLocales.length; k++) {
+                    if (loc.toString().equals(parseLocales[k])) {
+                        testParse = true;
+                        break;
+                    }
+                }
+            } else {
+                //RBNF parse is too slow.  Increase count only for debugging purpose for now.
+                //count = 100;
+            }
+
+            for (int j = 0; j < 3; ++j) {
+                RuleBasedNumberFormat fmt = new RuleBasedNumberFormat(loc, j+1);
+
+                for (int c = 0; c < count; c++) {
+                    double n;
+                    if (c < numbers.length) {
+                        n = numbers[c];
+                    } else {
+                        if (r == null) {
+                            r = createRandom();
+                        }
+                        n = ((int)(r.nextInt(10000) - 3000)) / 16d;
+                    }
+
+                    String s = fmt.format(n);
+                    logln(loc.getName() + names[j] + "success format: " + n + " -> " + s);
+
+                    if (testParse) {
+                        // We do not validate the result in this test case,
+                        // because there are cases which do not round trip by design.
+                        try {
+                            // non-lenient parse
+                            fmt.setLenientParseMode(false);
+                            Number num = fmt.parse(s);
+                            logln(loc.getName() + names[j] + "success parse: " + s + " -> " + num);
+                        } catch (ParseException pe) {
+                            String msg = loc.getName() + names[j] + "ERROR:" + pe.getMessage();
+                            logln(msg);
+                            if (errors == null) {
+                                errors = new StringBuffer();
+                            }
+                            errors.append("\n" + msg);
+                        }
+                    }
+                }
+            }
+        }
+        if (errors != null) {
+            //TODO: We need to fix parse problems - see #6895 / #6896
+            //errln(errors.toString());
+            logln(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());
+        }
+    }
+
+    /**
+     * 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";
+    
+    /* Tests the method
+     *      public boolean equals(Object that)
+     */
+    public void TestEquals(){
+        // Tests when "if (!(that instanceof RuleBasedNumberFormat))" is true
+        RuleBasedNumberFormat rbnf = new RuleBasedNumberFormat("dummy");
+        if( rbnf.equals(new String("dummy")) != false ||
+            rbnf.equals(new Character('a')) != false ||
+            rbnf.equals(new Object()) != false ||
+            rbnf.equals(-1) != false ||
+            rbnf.equals(0) != false ||
+            rbnf.equals(1) != false ||
+            rbnf.equals(-1.0) != false ||
+            rbnf.equals(0.0) != false ||
+            rbnf.equals(1.0) != false){
+            errln("RuleBasedNumberFormat.equals(Object that) was suppose to " +
+                    "be false for an invalid object.");
+        }
+        
+        // Tests when
+        // "if (!locale.equals(that2.locale) || lenientParse != that2.lenientParse)"
+        // is true
+        RuleBasedNumberFormat rbnf1 = new RuleBasedNumberFormat("dummy", new Locale("en"));
+        RuleBasedNumberFormat rbnf2 = new RuleBasedNumberFormat("dummy", new Locale("jp"));
+        RuleBasedNumberFormat rbnf3 = new RuleBasedNumberFormat("dummy", new Locale("sp"));
+        RuleBasedNumberFormat rbnf4 = new RuleBasedNumberFormat("dummy", new Locale("fr"));
+        
+        if(rbnf1.equals(rbnf2) != false || rbnf1.equals(rbnf3) != false ||
+                rbnf1.equals(rbnf4) != false || rbnf2.equals(rbnf3) != false ||
+                rbnf2.equals(rbnf4) != false || rbnf3.equals(rbnf4) != false){
+            errln("RuleBasedNumberFormat.equals(Object that) was suppose to " +
+            "be false for an invalid object.");
+        }
+        
+        if(rbnf1.equals(rbnf1) == false){
+            errln("RuleBasedNumberFormat.equals(Object that) was not suppose to " +
+            "be false for an invalid object.");
+        }
+        
+        if(rbnf2.equals(rbnf2) == false){
+            errln("RuleBasedNumberFormat.equals(Object that) was not suppose to " +
+            "be false for an invalid object.");
+        }
+        
+        if(rbnf3.equals(rbnf3) == false){
+            errln("RuleBasedNumberFormat.equals(Object that) was not suppose to " +
+            "be false for an invalid object.");
+        }
+        
+        if(rbnf4.equals(rbnf4) == false){
+            errln("RuleBasedNumberFormat.equals(Object that) was not suppose to " +
+            "be false for an invalid object.");
+        }
+        
+        RuleBasedNumberFormat rbnf5 = new RuleBasedNumberFormat("dummy", new Locale("en"));
+        RuleBasedNumberFormat rbnf6 = new RuleBasedNumberFormat("dummy", new Locale("en"));
+        
+        if(rbnf5.equals(rbnf6) == false){
+            errln("RuleBasedNumberFormat.equals(Object that) was not suppose to " +
+            "be false for an invalid object.");
+        }
+        rbnf6.setLenientParseMode(true);
+        
+        if(rbnf5.equals(rbnf6) != false){
+            errln("RuleBasedNumberFormat.equals(Object that) was suppose to " +
+            "be false for an invalid object.");
+        }
+
+        // Tests when "if (!ruleSets[i].equals(that2.ruleSets[i]))" is true
+        RuleBasedNumberFormat rbnf7 = new RuleBasedNumberFormat("not_dummy", new Locale("en"));
+        if(rbnf5.equals(rbnf7) != false){
+            errln("RuleBasedNumberFormat.equals(Object that) was suppose to " +
+            "be false for an invalid object.");
+        }
+    }
+    
+    /* Tests the method
+     *      public ULocale[] getRuleSetDisplayNameLocales()
+     */
+    public void TestGetRuleDisplayNameLocales(){
+        // Tests when "if (ruleSetDisplayNames != null" is false
+        RuleBasedNumberFormat rbnf = new RuleBasedNumberFormat("dummy");
+        rbnf.getRuleSetDisplayNameLocales();
+        if(rbnf.getRuleSetDisplayNameLocales() != null){
+            errln("RuleBasedNumberFormat.getRuleDisplayNameLocales() was suppose to " +
+            "return null.");
+        }
+    }
+    
+    /* Tests the method
+     *      private String[] getNameListForLocale(ULocale loc)
+     *      public String[] getRuleSetDisplayNames(ULocale loc)
+     */
+    public void TestGetNameListForLocale(){
+        // Tests when "if (names != null)" is false and
+        //  "if (loc != null && ruleSetDisplayNames != null)" is false
+        RuleBasedNumberFormat rbnf = new RuleBasedNumberFormat("dummy");
+        rbnf.getRuleSetDisplayNames(null);
+        try{
+            rbnf.getRuleSetDisplayNames(null);
+        } catch(Exception e){
+            errln("RuleBasedNumberFormat.getRuleSetDisplayNames(ULocale loc) " +
+                    "was not suppose to have an exception.");
+        }
+    }
+
+    /* Tests the method
+     *      public String getRuleSetDisplayName(String ruleSetName, ULocale loc)
+     */
+    public void TestGetRulesSetDisplayName(){
+        RuleBasedNumberFormat rbnf = new RuleBasedNumberFormat("dummy");
+        //rbnf.getRuleSetDisplayName("dummy", new ULocale("en_US"));
+        
+        // Tests when "if (names != null) " is true
+
+        // Tests when the method throws an exception
+        try{
+            rbnf.getRuleSetDisplayName("", new ULocale("en_US"));
+            errln("RuleBasedNumberFormat.getRuleSetDisplayName(String ruleSetName, ULocale loc) " +
+                "was suppose to have an exception.");
+        } catch(Exception e){}
+        
+        try{
+            rbnf.getRuleSetDisplayName("dummy", new ULocale("en_US"));
+            errln("RuleBasedNumberFormat.getRuleSetDisplayName(String ruleSetName, ULocale loc) " +
+                "was suppose to have an exception.");
+        } catch(Exception e){}
+    }
+    
+    /* Test the method
+     *      public void process(StringBuffer buf, NFRuleSet ruleSet)
+     */
+    public void TestChineseProcess(){
+        String ruleWithChinese =
+            "%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:;"
+            + "%accounting:\n"
+            + "    \u842c; \u842c; \u842c; \u842c; \u842c; \u842c; \u842c; \u842c;\n"
+            + "        \u842c; \u842c;\n"
+            + "    \u842c; \u842c; \u842c; \u842c; \u842c;\n"
+            + "        \u842c; \u842c; \u842c; \u842c;\n"
+            + "        \u842c;\n"
+            + "    twentieth; \u96f6|>>;\n"
+            + "    30: \u96f6; \u96f6|>>;\n"
+            + "    40: \u96f6; \u96f6|>>;\n"
+            + "    50: \u96f6; \u96f6|>>;\n"
+            + "    60: \u96f6; \u96f6|>>;\n"
+            + "    70: \u96f6; \u96f6|>>;\n"
+            + "    80: \u96f6; \u96f6|>>;\n"
+            + "    90: \u96f6; \u96f6|>>;\n"
+            + "    100: <%simplified< \u96f6; <%simplified< \u96f6 >>;\n"
+            + "    1000: <%simplified< \u96f6; <%simplified< \u96f6 >>;\n"
+            + "    1,000,000: <%simplified< \u96f6; <%simplified< \u96f6 >>;\n"
+            + "    1,000,000,000,000: <%simplified< \u96f6;\n"
+            + "        <%simplified< \u96f6 >>;\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=;"
+            + "%traditional:\n"
+            + "    -x: \u3007| >>;\n"
+            + "    x.x: << \u9ede >>;\n"
+            + "    \u842c; \u842c; \u842c; \u842c; \u842c; \u842c; \u842c; \u842c; \u842c; \u842c;\n"
+            + "    \u842c; \u842c; \u842c; \u842c; \u842c; \u842c; \u842c;\n"
+            + "        \u842c; \u842c; \u842c;\n"
+            + "    20: \u842c[->>];\n"
+            + "    30: \u842c[->>];\n"
+            + "    40: \u842c[->>];\n"
+            + "    50: \u842c[->>];\n"
+            + "    60: \u842c[->>];\n"
+            + "    70: \u842c[->>];\n"
+            + "    80: \u842c[->>];\n"
+            + "    90: \u842c[->>];\n"
+            + "    100: << \u842c[ >>];\n"
+            + "    1000: << \u842c[ >>];\n"
+            + "    1,000,000: << \u842c[ >>];\n"
+            + "    1,000,000,000,000: << \u842c[ >>];\n"
+            + "    1,000,000,000,000,000: =#,##0=;\n"
+            + "%time:\n"
+            + "    =0= sec.;\n"
+            + "    60: =%%min-sec=;\n"
+            + "    3600: =%%hr-min-sec=;\n"
+            + "%%min-sec:\n"
+            + "    0: *=00=;\n"
+            + "    60/60: <0<>>;\n"
+            + "%%hr-min-sec:\n"
+            + "    0: *=00=;\n"
+            + "    60/60: <00<>>;\n"
+            + "    3600/60: <#,##0<:>>>;\n"
+            + "%%post-process:com.ibm.icu.text.RBNFChinesePostProcessor\n";
+        
+        RuleBasedNumberFormat rbnf =  new RuleBasedNumberFormat(ruleWithChinese, ULocale.CHINESE);
+        String[] ruleNames = rbnf.getRuleSetNames();
+        try{
+            // Test with "null" rules
+            rbnf.format(0.0,null);
+            errln("This was suppose to return an exception for a null format");
+        } catch(Exception e){}
+        for(int i=0; i<ruleNames.length; i++){
+            try{
+                rbnf.format(-123450.6789,ruleNames[i]);
+            } catch(Exception e){
+                errln("RBNFChinesePostProcessor was not suppose to return an exception " +
+                        "when being formatted with parameters 0.0 and " + ruleNames[i]);
+            }
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/format/TestAll.java b/main/tests/core/src/com/ibm/icu/dev/test/format/TestAll.java
new file mode 100644
index 0000000..15e86c9
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/TestAll.java
@@ -0,0 +1,119 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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",
+                  "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/main/tests/core/src/com/ibm/icu/dev/test/format/TestMessageFormat.java b/main/tests/core/src/com/ibm/icu/dev/test/format/TestMessageFormat.java
new file mode 100644
index 0000000..15f900f
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/TestMessageFormat.java
@@ -0,0 +1,1517 @@
+/*
+**********************************************************************
+* Copyright (c) 2004-2009, 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.HashMap;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Locale;
+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.DecimalFormatSymbols;
+import com.ibm.icu.text.MessageFormat;
+import com.ibm.icu.text.NumberFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.ibm.icu.text.UFormat;
+import com.ibm.icu.util.TimeZone;
+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());
+    }
+
+    @SuppressWarnings("static-access")
+    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());
+        
+        Map<String,Object> map = new Hashtable<String,Object>();
+        try{
+            msg.format("", map);
+        } catch(Exception e){
+            errln("MessageFormat.format(String,Map) was not suppose to return " +
+                    "an exception.");
+        }
+    }
+
+    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] + "]");
+            }
+        }
+    }
+    
+    public void TestSetFormat() {
+        MessageFormat ms = new MessageFormat("{number} {date}", ULocale.ENGLISH);
+        final DecimalFormat decimalFormat = new DecimalFormat("000.000", DecimalFormatSymbols.getInstance(ULocale.ENGLISH));
+        ms.setFormatByArgumentName("number", decimalFormat);
+        final SimpleDateFormat dateFormat = new SimpleDateFormat("'year:'yy 'month:'MM 'day:'dd");
+        dateFormat.setTimeZone(TimeZone.getTimeZone("Etc/GMT"));
+        ms.setFormatByArgumentName("date", dateFormat);
+        Map map = new HashMap();
+        map.put("number", new Integer(1234));
+        map.put("date", new Date(0,0,0));
+        String result = ms.format(map);
+        assertEquals("setFormatByArgumentName", "1234.000 year:99 month:12 day:31", result);
+        Set formatNames = ms.getFormatArgumentNames();
+        assertEquals("Format Names match", formatNames, map.keySet());
+        assertEquals("Decimal", decimalFormat, ms.getFormatByArgumentName("number"));
+        assertEquals("Date", dateFormat, ms.getFormatByArgumentName("date"));
+    }
+
+    // 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 2\u207f\u1d48 folder 'tmp' contains 15 file(s), created at 9:58:08 AM on Jul 18, 2007.",
+                "The 2\u207f\u1d48 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());
+            }
+        }
+
+        // Tests when "if (arguments == null)" is true
+        try {
+            MessageFormat mf = new MessageFormat("");
+            mf.formatToCharacterIterator(null);
+            errln("MessageFormat.formatToCharacterIterator(Object) was suppose "
+                    + "to return an exception when null is passed.");
+        } catch (Exception e) {
+        }
+    }
+    
+    /*
+     * Tests the method public Format getFormatByArgumentName(String argumentName)
+     */
+    public void TestGetFormatByArgumentName() {
+        MessageFormat mf = new MessageFormat("");
+        if (mf.getFormatByArgumentName("") != null) {
+            errln("MessageFormat.getFormatByArgumentName(String) was suppose "
+                    + "to return an null if argumentName was not found.");
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/format/TimeUnitTest.java b/main/tests/core/src/com/ibm/icu/dev/test/format/TimeUnitTest.java
new file mode 100644
index 0000000..01eb1cf
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/TimeUnitTest.java
@@ -0,0 +1,209 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, 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.Locale;
+
+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);
+        
+        format.setLocale(new Locale("pt_BR"));
+        formatParsing(format);
+        format = new TimeUnitFormat(new Locale("de"));
+        formatParsing(format);
+        format = new TimeUnitFormat(new Locale("ja"));
+        format.setNumberFormat(NumberFormat.getNumberInstance(new Locale("en")));
+        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());
+                }
+            }
+        }
+    }
+    
+    /*
+     * Tests the method public TimeUnitFormat(ULocale locale, int style), public TimeUnitFormat(Locale locale, int style)
+     */
+    @SuppressWarnings("unused")
+    public void TestTimeUnitFormat() {
+        // Tests when "if (style < FULL_NAME || style >= TOTAL_STYLES)" is true
+        // TOTAL_STYLES is 2
+        int[] cases = { TimeUnitFormat.FULL_NAME - 1, TimeUnitFormat.FULL_NAME - 2, 2, 3 };
+        for (int i = 0; i < cases.length; i++) {
+            try {
+                TimeUnitFormat tuf = new TimeUnitFormat(new ULocale("en_US"), cases[i]);
+                errln("TimeUnitFormat(ULocale,int) was suppose to return an " + "exception for a style value of "
+                        + cases[i] + "passed into the constructor.");
+            } catch (Exception e) {
+            }
+        }
+        for (int i = 0; i < cases.length; i++) {
+            try {
+                TimeUnitFormat tuf = new TimeUnitFormat(new Locale("en_US"), cases[i]);
+                errln("TimeUnitFormat(ULocale,int) was suppose to return an " + "exception for a style value of "
+                        + cases[i] + "passed into the constructor.");
+            } catch (Exception e) {
+            }
+        }
+    }
+    
+    /*
+     * Tests the method public TimeUnitFormat setLocale(ULocale locale) public TimeUnitFormat setLocale(Locale locale)
+     */
+    public void TestSetLocale() {
+        // Tests when "if ( locale != this.locale )" is false
+        TimeUnitFormat tuf = new TimeUnitFormat(new ULocale("en_US"));
+        if (!tuf.setLocale(new ULocale("en_US")).equals(tuf) && !tuf.setLocale(new Locale("en_US")).equals(tuf)) {
+            errln("TimeUnitFormat.setLocale(ULocale) was suppose to "
+                    + "return the same TimeUnitFormat object if the same " + "ULocale is entered as a parameter.");
+        }
+    }
+
+    /*
+     * Tests the method public TimeUnitFormat setNumberFormat(NumberFormat format)
+     */
+    public void TestSetNumberFormat() {
+        TimeUnitFormat tuf = new TimeUnitFormat();
+
+        // Tests when "if (format == this.format)" is false
+        // Tests when "if ( format == null )" is false
+        tuf.setNumberFormat(NumberFormat.getInstance());
+
+        // Tests when "if (format == this.format)" is true
+        if (!tuf.setNumberFormat(NumberFormat.getInstance()).equals(tuf)) {
+            errln("TimeUnitFormat.setNumberFormat(NumberFormat) was suppose to "
+                    + "return the same object when the same NumberFormat is passed.");
+        }
+
+        // Tests when "if ( format == null )" is true
+        // Tests when "if ( locale == null )" is true
+        if (!tuf.setNumberFormat(null).equals(tuf)) {
+            errln("TimeUnitFormat.setNumberFormat(NumberFormat) was suppose to "
+                    + "return the same object when null is passed.");
+        }
+
+        TimeUnitFormat tuf1 = new TimeUnitFormat(new ULocale("en_US"));
+
+        // Tests when "if ( locale == null )" is false
+        tuf1.setNumberFormat(NumberFormat.getInstance());
+        tuf1.setNumberFormat(null);
+    }
+    
+    /*
+     * Tests the method public StringBuffer format(Object obj, ...
+     */
+    public void TestFormat() {
+        TimeUnitFormat tuf = new TimeUnitFormat();
+        try {
+            tuf.format(new Integer("1"), null, null);
+            errln("TimeUnitFormat.format(Object,StringBuffer,FieldPosition) "
+                    + "was suppose to return an exception because the Object "
+                    + "parameter was not of type TimeUnitAmount.");
+        } catch (Exception e) {
+        }
+    }
+    
+    /* Tests the method private void setup() from
+     * public Object parseObject(String source, ParsePosition pos)
+     * 
+     */
+    public void TestSetup(){
+        TimeUnitFormat tuf = new TimeUnitFormat();
+        tuf.parseObject("", new ParsePosition(0));
+        
+        TimeUnitFormat tuf1 = new TimeUnitFormat();
+        tuf1.setNumberFormat(NumberFormat.getInstance());
+        tuf1.parseObject("", new ParsePosition(0));
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/format/TimeZoneAliases.txt b/main/tests/core/src/com/ibm/icu/dev/test/format/TimeZoneAliases.txt
new file mode 100644
index 0000000..d9ffead
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/format/TimeZoneFormatTest.java b/main/tests/core/src/com/ibm/icu/dev/test/format/TimeZoneFormatTest.java
new file mode 100644
index 0000000..38fa50e
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/format/TimeZoneFormatTest.java
@@ -0,0 +1,356 @@
+/*
+ ********************************************************************************
+ * 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
+                                boolean bFailure = false;
+                                if ((tz instanceof BasicTimeZone) && (outtz instanceof BasicTimeZone)) {
+                                    bFailure = !(canonicalID.indexOf('/') == -1)
+                                                && !((BasicTimeZone)outtz).hasEquivalentTransitions(tz, low, high);
+                                }
+                                if (bFailure) {
+                                    errln("Canonical round trip failed; tz=" + tzids[tzidx]
+                                            + ", locale=" + LOCALES[locidx] + ", pattern=" + PATTERNS[patidx]
+                                            + ", time=" + DATES[datidx].getTime() + ", str=" + tzstr
+                                            + ", outtz=" + outtz.getID());
+                                } else {
+                                    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 {
+                            // 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]) {
+                                    if (TimeZone.getDefaultTimeZoneType() == TimeZone.TIMEZONE_JDK
+                                            && tzids[tzidx].startsWith("SystemV/")) {
+                                        // JDK uses rule SystemV for these zones while
+                                        // ICU handles these zones as aliases of existing time zones
+                                        logln("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]);
+
+                                    } else {
+                                        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/main/tests/core/src/com/ibm/icu/dev/test/format/WriteNumberFormatSerialTestData.java b/main/tests/core/src/com/ibm/icu/dev/test/format/WriteNumberFormatSerialTestData.java
new file mode 100644
index 0000000..81b575a
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/impl/TestAll.java b/main/tests/core/src/com/ibm/icu/dev/test/impl/TestAll.java
new file mode 100644
index 0000000..f66b855
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/iterator/TestUCharacterIterator.java b/main/tests/core/src/com/ibm/icu/dev/test/iterator/TestUCharacterIterator.java
new file mode 100644
index 0000000..725739e
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/lang/TestAll.java b/main/tests/core/src/com/ibm/icu/dev/test/lang/TestAll.java
new file mode 100644
index 0000000..15cdd2a
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/lang/TestAll.java
@@ -0,0 +1,31 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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",
+                  "UnicodeSetTest"
+              },
+              "Character and Script Tests");
+    }
+
+    public static final String CLASS_TARGET_NAME = "Property";
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/lang/TestCharacter.java b/main/tests/core/src/com/ibm/icu/dev/test/lang/TestCharacter.java
new file mode 100644
index 0000000..3a4f0b3
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/lang/TestUScript.java b/main/tests/core/src/com/ibm/icu/dev/test/lang/TestUScript.java
new file mode 100644
index 0000000..f429214
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/lang/TestUScript.java
@@ -0,0 +1,410 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2009, 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/main/tests/core/src/com/ibm/icu/dev/test/lang/TestUScriptRun.java b/main/tests/core/src/com/ibm/icu/dev/test/lang/TestUScriptRun.java
new file mode 100644
index 0000000..7f71771
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/lang/TestUScriptRun.java
@@ -0,0 +1,430 @@
+/**
+*******************************************************************************
+* Copyright (C) 1999-2009, 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");
+        }
+        
+        try {
+            scriptRun.reset(dummy, 0, dummy.length);
+            scriptRun.reset();
+        } catch(IllegalArgumentException iae){
+            errln("scriptRun.reset() produced an IllegalArgumentException!");
+        }
+        
+        try {
+            scriptRun.reset((char[]) null);
+        } catch(IllegalArgumentException iae){
+            errln("scriptRun.reset((char[])null) produced an IllegalArgumentException!");
+        }
+        
+        try {
+            scriptRun.reset((String) null);
+        } catch(IllegalArgumentException iae){
+            errln("scriptRun.reset((String)null) produced an IllegalArgumentException!");
+        }
+    }
+    
+    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!");
+            }
+            
+            /* Tests "public final void reset()" */
+            // Tests when "while (stackIsNotEmpty())" is true
+            try{
+                UScriptRun usr = new UScriptRun((String)null);
+                usr.reset();
+            } catch (Exception e){
+                errln("scriptRun.reset() was not suppose to produce an exception.");
+            }
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java b/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCaseTest.java
new file mode 100644
index 0000000..c5d6224
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCategoryTest.java b/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCategoryTest.java
new file mode 100644
index 0000000..6f8e1d0
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCompare.java b/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterCompare.java
new file mode 100644
index 0000000..65206f8
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterDirectionTest.java b/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterDirectionTest.java
new file mode 100644
index 0000000..676bb7e
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterDirectionTest.java
@@ -0,0 +1,80 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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 initialization
+    */
+    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;
+            // Placed <= because we need to consider 'Unassigned'
+            // when it goes out of bounds of UCharacterDirection
+            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/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterSurrogateTest.java b/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterSurrogateTest.java
new file mode 100644
index 0000000..c1216ef
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterTest.java b/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterTest.java
new file mode 100644
index 0000000..dabc670
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterTest.java
@@ -0,0 +1,3256 @@
+/**
+*******************************************************************************
+* Copyright (C) 1996-2009, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.test.lang;
+
+import java.io.BufferedReader;
+import java.util.Arrays;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.TestUtil;
+import com.ibm.icu.impl.NormalizerImpl;
+import com.ibm.icu.impl.UBiDiProps;
+import com.ibm.icu.impl.UCaseProps;
+import com.ibm.icu.impl.UCharacterName;
+import com.ibm.icu.impl.UCharacterProperty;
+import com.ibm.icu.impl.USerializedSet;
+import com.ibm.icu.impl.Utility;
+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.ULocale;
+import com.ibm.icu.util.ValueIterator;
+import com.ibm.icu.util.VersionInfo;
+
+/**
+* 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, 0x00a0, 0x2000, 0x2001, 0x2005};
+        int nonspaces[] = {0x0061, 0x0062, 0x0063, 0x0064, 0x0074};
+        int whitespaces[] = {0x2008, 0x2009, 0x200a, 0x001c, 0x000c /* ,0x200b */}; // 0x200b was "Zs" in Unicode 4.0, but it is "Cf" in Unicode 4.1
+        int nonwhitespaces[] = {0x0061, 0x0062, 0x003c, 0x0028, 0x003f, 0x00a0, 0x2007, 0x202f, 0xfefe, 0x200b};
+
+        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]);
+            }
+        }
+        
+        int[] valid_tests = {
+                UCharacter.MIN_VALUE, UCharacter.MIN_VALUE+1,
+                UCharacter.MAX_VALUE-1, UCharacter.MAX_VALUE};
+        int[] invalid_tests = {
+                UCharacter.MIN_VALUE-1, UCharacter.MIN_VALUE-2,
+                UCharacter.MAX_VALUE+1, UCharacter.MAX_VALUE+2};
+        
+        for(int i=0; i< valid_tests.length; i++){
+            try{
+                UCharacter.getAge(valid_tests[i]);
+            } catch(Exception e){
+                errln("UCharacter.getAge(int) was not suppose to have " +
+                        "an exception. Value passed: " + valid_tests[i]);
+            }
+        }
+            
+        for(int i=0; i< invalid_tests.length; i++){
+            try{
+                UCharacter.getAge(invalid_tests[i]);
+                errln("UCharacter.getAge(int) was suppose to have " +
+                        "an exception. Value passed: " + invalid_tests[i]);
+            } catch(Exception e){
+            }
+        }
+    }
+
+    /**
+     * 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");
+        }
+    }
+
+    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);
+            }
+        }
+    }
+
+    /*
+     * The following method tests
+     *      public static UnicodeBlock getInstance(int id)
+     */
+    public void TestGetInstance(){
+        // Testing values for invalid and valid ID
+        int[] invalid_test = {-1,-10,-100};
+        for(int i=0; i< invalid_test.length; i++){
+            if(UCharacter.UnicodeBlock.INVALID_CODE != UCharacter.UnicodeBlock.getInstance(invalid_test[i])){
+                errln("UCharacter.UnicodeBlock.getInstance(invalid_test[i]) was " +
+                        "suppose to return UCharacter.UnicodeBlock.INVALID_CODE. Got " +
+                        UCharacter.UnicodeBlock.getInstance(invalid_test[i]) + ". Expected " +
+                        UCharacter.UnicodeBlock.INVALID_CODE);
+            }
+        }
+    }
+
+    /*
+     * The following method tests
+     *      public static UnicodeBlock of(int ch)
+     */
+    public void TestOf(){
+        if(UCharacter.UnicodeBlock.INVALID_CODE != UCharacter.UnicodeBlock.of(UTF16.CODEPOINT_MAX_VALUE+1)){
+            errln("UCharacter.UnicodeBlock.of(UTF16.CODEPOINT_MAX_VALUE+1) was " +
+                    "suppose to return UCharacter.UnicodeBlock.INVALID_CODE. Got " +
+                    UCharacter.UnicodeBlock.of(UTF16.CODEPOINT_MAX_VALUE+1) + ". Expected " +
+                    UCharacter.UnicodeBlock.INVALID_CODE);
+        }
+    }
+
+    /*
+     * The following method tests
+     *      static int idOf(int ch)
+     */
+    public void TestIDOf(){
+        int[] invalid_test = {-2, -1, UTF16.CODEPOINT_MAX_VALUE+1, UTF16.CODEPOINT_MAX_VALUE+2};
+        
+        for(int i=0; i < invalid_test.length; i++){
+            int result = UCharacter.getIntPropertyValue(invalid_test[i], UProperty.BLOCK);
+            if(result != -1){
+                errln("UCharacter.UnicodeBlock.idOf() was suppose to return -1. Got " + result);
+            }
+        }
+        
+        int[] valid_test = {0, 1, UTF16.CODEPOINT_MAX_VALUE, UTF16.CODEPOINT_MAX_VALUE-1};
+        
+        for(int i=0; i < valid_test.length; i++){
+            int result = UCharacter.getIntPropertyValue(valid_test[i], UProperty.BLOCK);
+            if(result == -1){
+                errln("UCharacter.UnicodeBlock.idOf() was not suppose to return -1. Got " + result);
+            }
+        }
+    }
+    
+    /*
+     * The following method tests
+     *      public static final UnicodeBlock forName(String blockName)
+     */
+    public void TestForName(){
+        //UCharacter.UnicodeBlock.forName("");
+        //Tests when "if (b == null)" is true
+    }
+    
+    /*
+     * The following method tests
+     *      public static int getNumericValue(int ch)
+     */
+    public void TestGetNumericValue(){
+        // The following tests the else statement when
+        //      if(numericType<NumericType.COUNT) is false
+        // The following values were obtained by testing all values from
+        //      UTF16.CODEPOINT_MIN_VALUE to UTF16.CODEPOINT_MAX_VALUE inclusively
+        //      to obtain the value to go through the else statement.
+        int[] valid_values =
+            {3058,3442,4988,8558,8559,8574,8575,8576,8577,8578,8583,8584,19975,
+             20159,20191,20740,20806,21315,33836,38433,65819,65820,65821,65822,
+             65823,65824,65825,65826,65827,65828,65829,65830,65831,65832,65833,
+             65834,65835,65836,65837,65838,65839,65840,65841,65842,65843,65861,
+             65862,65863,65868,65869,65870,65875,65876,65877,65878,65899,65900,
+             65901,65902,65903,65904,65905,65906,66378,68167};
+        
+        int[] results =
+            {1000,1000,10000,500,1000,500,1000,1000,5000,10000,50000,100000,
+             10000,100000000,1000,100000000,-2,1000,10000,1000,300,400,500,
+             600,700,800,900,1000,2000,3000,4000,5000,6000,7000,8000,9000,
+             10000,20000,30000,40000,50000,60000,70000,80000,90000,500,5000,
+             50000,500,1000,5000,500,1000,10000,50000,300,500,500,500,500,500,
+             1000,5000,900,1000};
+        
+        if(valid_values.length != results.length){
+            errln("The valid_values array and the results array need to be "+
+                    "the same length.");
+        } else {
+            for(int i = 0; i < valid_values.length; i++){
+                try{
+                    if(UCharacter.getNumericValue(valid_values[i]) != results[i]){
+                        errln("UCharacter.getNumericValue(i) returned a " +
+                                "different value from the expected result. " +
+                                "Got " + UCharacter.getNumericValue(valid_values[i]) +
+                                "Expected" + results[i]);
+                    }
+                } catch(Exception e){
+                    errln("UCharacter.getNumericValue(int) returned an exception " +
+                            "with the parameter value");
+                }
+            }
+        }
+    }
+
+    /*
+     * The following method tests
+     *      public static double getUnicodeNumericValue(int ch)
+     */
+    // The following tests covers if(mant==0), else if(mant > 9), and default
+    public void TestGetUnicodeNumericValue(){
+        /*  The code coverage for if(mant==0), else if(mant > 9), and default
+         *  could not be covered even with input values from UTF16.CODEPOINT_MIN_VALUE
+         *  to UTF16.CODEPOINT_MAX_VALUE. I also tested from UTF16.CODEPOINT_MAX_VALUE to
+         *  Integer.MAX_VALUE and didn't recieve any code coverage there too.
+         *  Therefore, the code could either be dead code or meaningless. 
+         */
+    }
+
+    /*
+     * The following method tests
+     *      public static String toString(int ch)
+     */
+    public void TestToString(){
+        int[] valid_tests = {
+                UCharacter.MIN_VALUE, UCharacter.MIN_VALUE+1,
+                UCharacter.MAX_VALUE-1, UCharacter.MAX_VALUE};
+        int[] invalid_tests = {
+                UCharacter.MIN_VALUE-1, UCharacter.MIN_VALUE-2,
+                UCharacter.MAX_VALUE+1, UCharacter.MAX_VALUE+2};
+        
+        for(int i=0; i< valid_tests.length; i++){
+            if(UCharacter.toString(valid_tests[i]) == null){
+                errln("UCharacter.toString(int) was not suppose to return " +
+                "null because it was given a valid parameter. Value passed: " +
+                valid_tests[i] + ". Got null.");
+            }
+        }
+        
+        for(int i=0; i< invalid_tests.length; i++){
+            if(UCharacter.toString(invalid_tests[i]) != null){
+                errln("UCharacter.toString(int) was suppose to return " +
+                "null because it was given an invalid parameter. Value passed: " +
+                invalid_tests[i] + ". Got: " + UCharacter.toString(invalid_tests[i]));
+            }
+        }
+    }
+
+    /*
+     * The following method tests
+     *      public static int getCombiningClass(int ch)
+     */
+    public void TestGetCombiningClass(){
+        int[] valid_tests = {
+                UCharacter.MIN_VALUE, UCharacter.MIN_VALUE+1,
+                UCharacter.MAX_VALUE-1, UCharacter.MAX_VALUE};
+        int[] invalid_tests = {
+                UCharacter.MIN_VALUE-1, UCharacter.MIN_VALUE-2,
+                UCharacter.MAX_VALUE+1, UCharacter.MAX_VALUE+2};
+        
+        for(int i=0; i< valid_tests.length; i++){
+            try{
+                UCharacter.getCombiningClass(valid_tests[i]);
+            } catch(Exception e){
+                errln("UCharacter.getCombiningClass(int) was not suppose to have " +
+                        "an exception. Value passed: " + valid_tests[i]);
+            }
+        }
+            
+        for(int i=0; i< invalid_tests.length; i++){
+            try{
+                UCharacter.getCombiningClass(invalid_tests[i]);
+                errln("UCharacter.getCombiningClass(int) was suppose to have " +
+                        "an exception. Value passed: " + invalid_tests[i]);
+            } catch(Exception e){
+            }
+        }
+    }
+
+    /*
+     * The following method tests
+     *      public static String getName(int ch)
+     */
+    public void TestGetName(){
+        // Need to test on other "one characters" for the getName() method
+        String[] data = {"a","z"};
+        String[] results = {"LATIN SMALL LETTER A","LATIN SMALL LETTER Z"};
+        if(data.length != results.length){
+            errln("The data array and the results array need to be "+
+                    "the same length.");
+        } else {
+            for(int i=0; i < data.length; i++){
+                if(UCharacter.getName(data[i], "").compareTo(results[i]) != 0){
+                    errln("UCharacter.getName(String, String) was suppose " +
+                            "to have the same result for the data in the parameter. " +
+                            "Value passed: " + data[i] + ". Got: " +
+                            UCharacter.getName(data[i], "") + ". Expected: " +
+                            results[i]);
+                }
+            }
+        }
+    }
+    
+    /*
+     * The following method tests
+     *      public static String getISOComment(int ch)
+     */
+    public void TestGetISOComment(){
+        int[] invalid_tests = {
+                UCharacter.MIN_VALUE-1, UCharacter.MIN_VALUE-2,
+                UCharacter.MAX_VALUE+1, UCharacter.MAX_VALUE+2};
+        
+        for(int i=0; i< invalid_tests.length; i++){
+            if(UCharacter.getISOComment(invalid_tests[i]) != null){
+                errln("UCharacter.getISOComment(int) was suppose to return " +
+                "null because it was given an invalid parameter. Value passed: " +
+                invalid_tests[i] + ". Got: " + UCharacter.getISOComment(invalid_tests[i]));
+            }
+        }
+    }
+
+    /*
+     * The following method tests
+     *      public void setLimit(int lim)
+     */
+    public void TestSetLimit(){
+        // TODO: Tests when "if(0<=lim && lim<=s.length())" is false
+    }
+
+    /*
+     * The following method tests
+     *      public int nextCaseMapCP()
+     */
+    public void TestNextCaseMapCP(){
+        // TODO: Tests when "if(UTF16.LEAD_SURROGATE_MIN_VALUE<=c || c<=UTF16.TRAIL_SURROGATE_MAX_VALUE)" is false
+        /* TODO: Tests when "if( c<=UTF16.LEAD_SURROGATE_MAX_VALUE && cpLimit<limit &&
+         * UTF16.TRAIL_SURROGATE_MIN_VALUE<=(c2=s.charAt(cpLimit)) && c2<=UTF16.TRAIL_SURROGATE_MAX_VALUE)" is false
+         */
+    }
+
+    /*
+     * The following method tests
+     *      public void reset(int direction)
+     */
+    public void TestReset(){
+        // The method reset() is never called by another function
+        // TODO: Tests when "else if(direction<0)" is false
+    }
+
+    /*
+     * The following method tests
+     *      public static String toTitleCase(Locale locale, String str, BreakIterator breakiter)
+     */
+    public void TestToTitleCaseCoverage(){
+        //Calls the function "toTitleCase(Locale locale, String str, BreakIterator breakiter)"
+        String[] locale={"en","fr","zh","ko","ja","it","de",""};
+        for(int i=0; i<locale.length; i++){
+            UCharacter.toTitleCase(new Locale(locale[i]), "", null);
+        }
+        
+        // Calls the function "String toTitleCase(ULocale locale, String str, BreakIterator titleIter, int options)"
+        // Tests when "if (locale == null)" is true
+        UCharacter.toTitleCase(null, "", null, 0);
+        
+        // TODO: Tests when "if(index==BreakIterator.DONE || index>srcLength)" is true
+        // TODO: Tests when "while((c=iter.nextCaseMapCP())>=0 && UCaseProps.NONE==gCsp.getType(c))" is false
+        // TODO: Tests when "if(prev<titleStart)" is false
+        // TODO: Tests when "if(c<=0xffff)" is false
+        // TODO: Tests when "if(c<=0xffff)" is false
+        // TODO: Tests when "if(titleLimit<index)" is false
+        // TODO: Tests when "else if((nc=iter.nextCaseMapCP())>=0)" is false
+    }
+    /*
+     * The following method tests
+     *      public static String toUpperCase(ULocale locale, String str)
+     */
+    public void TestToUpperCase(){
+        // TODO: Tests when "while((c=iter.nextCaseMapCP())>=0)" is false
+    }
+
+    /*
+     * The following method tests
+     *      public static String toLowerCase(ULocale locale, String str)
+     */
+    public void TestToLowerCase(){
+        // Test when locale is null
+        String[] cases = {"","a","A","z","Z","Dummy","DUMMY","dummy","a z","A Z",
+                "'","\"","0","9","0a","a0","*","~!@#$%^&*()_+"};
+        for(int i=0; i<cases.length; i++){
+            try{
+                UCharacter.toLowerCase((ULocale) null, cases[i]);
+            } catch(Exception e){
+                errln("UCharacter.toLowerCase was not suppose to return an " +
+                        "exception for input of null and string: " + cases[i]);
+            }
+        }
+        // TODO: Tests when "while((c=iter.nextCaseMapCP())>=0)" is false
+    }
+
+    /*
+     * The following method tests
+     *      public static int getHanNumericValue(int ch)
+     */
+    public void TestGetHanNumericValue(){
+        int[] valid = {
+                0x3007, //IDEOGRAPHIC_NUMBER_ZERO_
+                0x96f6, //CJK_IDEOGRAPH_COMPLEX_ZERO_
+                0x4e00, //CJK_IDEOGRAPH_FIRST_
+                0x58f9, //CJK_IDEOGRAPH_COMPLEX_ONE_
+                0x4e8c, //CJK_IDEOGRAPH_SECOND_
+                0x8cb3, //CJK_IDEOGRAPH_COMPLEX_TWO_
+                0x4e09, //CJK_IDEOGRAPH_THIRD_
+                0x53c3, //CJK_IDEOGRAPH_COMPLEX_THREE_
+                0x56d8, //CJK_IDEOGRAPH_FOURTH_
+                0x8086, //CJK_IDEOGRAPH_COMPLEX_FOUR_
+                0x4e94, //CJK_IDEOGRAPH_FIFTH_
+                0x4f0d, //CJK_IDEOGRAPH_COMPLEX_FIVE_
+                0x516d, //CJK_IDEOGRAPH_SIXTH_
+                0x9678, //CJK_IDEOGRAPH_COMPLEX_SIX_
+                0x4e03, //CJK_IDEOGRAPH_SEVENTH_
+                0x67d2, //CJK_IDEOGRAPH_COMPLEX_SEVEN_
+                0x516b, //CJK_IDEOGRAPH_EIGHTH_
+                0x634c, //CJK_IDEOGRAPH_COMPLEX_EIGHT_
+                0x4e5d, //CJK_IDEOGRAPH_NINETH_
+                0x7396, //CJK_IDEOGRAPH_COMPLEX_NINE_
+                0x5341, //CJK_IDEOGRAPH_TEN_
+                0x62fe, //CJK_IDEOGRAPH_COMPLEX_TEN_
+                0x767e, //CJK_IDEOGRAPH_HUNDRED_
+                0x4f70, //CJK_IDEOGRAPH_COMPLEX_HUNDRED_
+                0x5343, //CJK_IDEOGRAPH_THOUSAND_
+                0x4edf, //CJK_IDEOGRAPH_COMPLEX_THOUSAND_
+                0x824c, //CJK_IDEOGRAPH_TEN_THOUSAND_
+                0x5104, //CJK_IDEOGRAPH_HUNDRED_MILLION_
+        };
+        
+        int[] invalid = {-5,-2,-1,0};
+        
+        int[] results = {0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,100,100,
+                1000,1000,10000,100000000};
+        
+        if(valid.length != results.length){
+            errln("The arrays valid and results are suppose to be the same length " +
+                    "to test getHanNumericValue(int ch).");
+        } else{
+            for(int i=0; i<valid.length; i++){
+                if(UCharacter.getHanNumericValue(valid[i]) != results[i]){
+                    errln("UCharacter.getHanNumericValue does not return the " + 
+                            "same result as expected. Passed value: " + valid[i] +
+                            ". Got: " + UCharacter.getHanNumericValue(valid[i]) +
+                            ". Expected: " + results[i]);
+                }
+            }
+        }
+        
+        for(int i=0; i<invalid.length; i++){
+            if(UCharacter.getHanNumericValue(invalid[i]) != -1){
+                errln("UCharacter.getHanNumericValue does not return the " + 
+                        "same result as expected. Passed value: " + invalid[i] +
+                        ". Got: " + UCharacter.getHanNumericValue(invalid[i]) +
+                        ". Expected: -1");
+            }
+        }
+    }
+
+    /*
+     * The following method tests
+     *      public static boolean hasBinaryProperty(int ch, int property) 
+     */
+    public void TestHasBinaryProperty(){
+        // Testing when "if (ch < MIN_VALUE || ch > MAX_VALUE)" is true
+        int[] invalid = {
+                UCharacter.MIN_VALUE-1, UCharacter.MIN_VALUE-2,
+                UCharacter.MAX_VALUE+1, UCharacter.MAX_VALUE+2};
+        int[] valid = {
+                UCharacter.MIN_VALUE, UCharacter.MIN_VALUE+1,
+                UCharacter.MAX_VALUE, UCharacter.MAX_VALUE-1};
+        
+        for(int i=0; i<invalid.length; i++){
+            try{
+                UCharacter.hasBinaryProperty(invalid[i], 1);
+                errln("UCharacter.hasBinaryProperty(ch, property) was suppose to " +
+                        "give an exception for an invalid input. Value passed: " +
+                        invalid[i]);
+                
+            } catch(Exception e){}
+        }
+        
+        for(int i=0; i<valid.length; i++){
+            try{
+                UCharacter.hasBinaryProperty(valid[i], 1);
+            } catch(Exception e){
+                errln("UCharacter.hasBinaryProperty(ch, property) was not suppose to " +
+                        "give an exception for an valid input. Value passed: " +
+                        invalid[i]);
+            }
+        }
+    }
+
+    /*
+     * The following method tests
+     *      public static int getIntPropertyValue(int ch, int type)
+     */
+    public void TestGetIntPropertyValue(){
+        /* Testing UCharacter.getIntPropertyValue(ch, type) */
+        // Testing when "if (type < UProperty.BINARY_START)" is true
+        int[] negative_cases = {-100,-50,-10,-5,-2,-1};
+        for(int i=0; i<negative_cases.length; i++){
+            if(UCharacter.getIntPropertyValue(0, negative_cases[i]) != 0){
+                errln("UCharacter.getIntPropertyValue(ch, type) was suppose to return 0 " +
+                        "when passing a negative value of " + negative_cases[i]);
+
+            }
+        }
+        
+        // Testing when "if(ch<NormalizerImpl.JAMO_L_BASE)" is true
+        for(int i=NormalizerImpl.JAMO_L_BASE-5; i<NormalizerImpl.JAMO_L_BASE; i++){
+            if(UCharacter.getIntPropertyValue(i, UProperty.HANGUL_SYLLABLE_TYPE) != 0){
+                errln("UCharacter.getIntPropertyValue(ch, type) was suppose to return 0 " +
+                        "when passing ch: " + i + "and type of Property.HANGUL_SYLLABLE_TYPE");
+
+            }
+        }
+        
+        // Testing when "else if((ch-=NormalizerImpl.HANGUL_BASE)<0)" is true
+        for(int i=NormalizerImpl.HANGUL_BASE-5; i<NormalizerImpl.HANGUL_BASE; i++){
+            if(UCharacter.getIntPropertyValue(i, UProperty.HANGUL_SYLLABLE_TYPE) != 0){
+                errln("UCharacter.getIntPropertyValue(ch, type) was suppose to return 0 " +
+                        "when passing ch: " + i + "and type of Property.HANGUL_SYLLABLE_TYPE");
+
+            }
+        }
+    }
+
+    /*
+     * The following method tests
+     *      public static int getIntPropertyMaxValue(int type)
+     */
+    public void TestGetIntPropertyMaxValue(){
+        /* Testing UCharacter.getIntPropertyMaxValue(type) */
+        // Testing when "else if (type < UProperty.INT_START)" is true
+        int[] cases = {UProperty.BINARY_LIMIT, UProperty.BINARY_LIMIT+1,
+                UProperty.INT_START-2, UProperty.INT_START-1};
+        for(int i=0; i<cases.length; i++){
+            if(UCharacter.getIntPropertyMaxValue(cases[i]) != -1){
+                errln("UCharacter.getIntPropertyMaxValue was suppose to return -1 " +
+                        "but got " + UCharacter.getIntPropertyMaxValue(cases[i]));
+            }
+        }
+        
+        // TODO: Testing when the case statment reaches "default"
+        // After testing between values of UProperty.INT_START and
+        // UProperty.INT_LIMIT are covered, none of the values reaches default.
+    }
+    
+    /*
+     * The following method tests
+     *      public static final int codePointAt(CharSequence seq, int index)
+     *      public static final int codePointAt(char[] text, int index, int limit)
+     */
+    public void TestCodePointAt(){
+        
+        // {LEAD_SURROGATE_MIN_VALUE,
+        //  LEAD_SURROGATE_MAX_VALUE, LEAD_SURROGATE_MAX_VALUE-1
+        String[] cases = {"\uD800","\uDBFF","\uDBFE"};
+        int[] result = {55296,56319,56318};
+        for(int i=0; i < cases.length; i++){
+            /* Testing UCharacter.codePointAt(seq, index) */
+            // Testing when "if (index < seq.length())" is false
+            if(UCharacter.codePointAt((CharSequence) cases[i], 0) != result[i])
+                errln("UCharacter.codePointAt(CharSequence ...) did not return as expected. " +
+                        "Passed value: " + cases[i] + ". Expected: " +
+                        result[i] + ". Got: " +
+                        UCharacter.codePointAt((CharSequence) cases[i], 0));
+            
+            /* Testing UCharacter.codePointAt(text, index) */
+            // Testing when "if (index < text.length)" is false
+            if(UCharacter.codePointAt(cases[i].toCharArray(), 0) != result[i])
+                errln("UCharacter.codePointAt(char[] ...) did not return as expected. " +
+                        "Passed value: " + cases[i] + ". Expected: " +
+                        result[i] + ". Got: " +
+                        UCharacter.codePointAt(cases[i].toCharArray(), 0));
+            
+            /* Testing UCharacter.codePointAt(text, index, limit) */
+            // Testing when "if (index < limit)" is false
+            if(UCharacter.codePointAt(cases[i].toCharArray(), 0, 1) != result[i])
+                errln("UCharacter.codePointAt(char[], int, int) did not return as expected. " +
+                        "Passed value: " + cases[i] + ". Expected: " +
+                        result[i] + ". Got: " +
+                        UCharacter.codePointAt(cases[i].toCharArray(), 0, 1));
+        }
+
+        /* Testing UCharacter.codePointAt(text, index, limit) */
+        // Testing when "if (index >= limit || limit > text.length)" is true
+        char[] empty_text = {};
+        char[] one_char_text = {'a'};
+        char[] reg_text = {'d','u','m','m','y'};
+        int[] limitCases = {2,3,5,10,25};
+        
+        // When index >= limit
+        for(int i=0; i < limitCases.length; i++){
+            try{
+                UCharacter.codePointAt(reg_text, 100, limitCases[i]);
+                errln("UCharacter.codePointAt was suppose to return an exception " +
+                        "but got " + UCharacter.codePointAt(reg_text, 100, limitCases[i]) +
+                        ". The following passed parameters were Text: " + reg_text.toString() + ", Start: " + 
+                        100 + ", Limit: " + limitCases[i] + ".");
+            } catch(Exception e){
+            }
+        }
+        
+        // When limit > text.length
+        for(int i=0; i < limitCases.length; i++){
+            try{
+                UCharacter.codePointAt(empty_text, 0, limitCases[i]);
+                errln("UCharacter.codePointAt was suppose to return an exception " +
+                        "but got " + UCharacter.codePointAt(empty_text, 0, limitCases[i]) +
+                        ". The following passed parameters were Text: " + empty_text.toString() + ", Start: " + 
+                        0 + ", Limit: " + limitCases[i] + ".");
+            } catch(Exception e){
+            }
+            
+            try{
+                UCharacter.codePointCount(one_char_text, 0, limitCases[i]);
+                errln("UCharacter.codePointCount was suppose to return an exception " +
+                        "but got " + UCharacter.codePointCount(one_char_text, 0, limitCases[i]) +
+                        ". The following passed parameters were Text: " + one_char_text.toString() + ", Start: " + 
+                        0 + ", Limit: " + limitCases[i] + ".");
+            } catch(Exception e){
+            }
+        }
+    }
+
+    /*
+     * The following method tests
+     *      public static final int codePointBefore(CharSequence seq, int index)
+     *      public static final int codePointBefore(char[] text, int index)
+     *      public static final int codePointBefore(char[] text, int index, int limit)
+     */
+    public void TestCodePointBefore(){
+        // {TRAIL_SURROGATE_MIN_VALUE,
+        //  TRAIL_SURROGATE_MAX_VALUE, TRAIL_SURROGATE_MAX_VALUE -1
+        String[] cases = {"\uDC00","\uDFFF","\uDDFE"};
+        int[] result = {56320,57343,56830};
+        for(int i=0; i < cases.length; i++){
+            /* Testing UCharacter.codePointBefore(seq, index) */
+            // Testing when "if (index > 0)" is false
+            if(UCharacter.codePointBefore((CharSequence) cases[i], 1) != result[i])
+                errln("UCharacter.codePointBefore(CharSequence ...) did not return as expected. " +
+                        "Passed value: " + cases[i] + ". Expected: " +
+                        result[i] + ". Got: " +
+                        UCharacter.codePointBefore((CharSequence) cases[i], 1));
+            
+            /* Testing UCharacter.codePointBefore(text, index) */
+            // Testing when "if (index > 0)" is false
+            if(UCharacter.codePointBefore(cases[i].toCharArray(), 1) != result[i])
+                errln("UCharacter.codePointBefore(char[] ...) did not return as expected. " +
+                        "Passed value: " + cases[i] + ". Expected: " +
+                        result[i] + ". Got: " +
+                        UCharacter.codePointBefore(cases[i].toCharArray(), 1));
+            
+            /* Testing UCharacter.codePointBefore(text, index, limit) */
+            // Testing when "if (index > limit)" is false
+            if(UCharacter.codePointBefore(cases[i].toCharArray(), 1, 0) != result[i])
+                errln("UCharacter.codePointBefore(char[], int, int) did not return as expected. " +
+                        "Passed value: " + cases[i] + ". Expected: " +
+                        result[i] + ". Got: " +
+                        UCharacter.codePointBefore(cases[i].toCharArray(), 1, 0));
+        }
+        
+        /* Testing UCharacter.codePointBefore(text, index, limit) */
+        char[] dummy = {'d','u','m','m','y'};
+        // Testing when "if (index <= limit || limit < 0)" is true
+        int[] negative_cases = {-100,-10,-5,-2,-1};
+        int[] index_cases = {0,1,2,5,10,100};
+        
+        for(int i=0; i < negative_cases.length; i++){
+            try{
+                UCharacter.codePointBefore(dummy, 10000, negative_cases[i]);
+                errln("UCharacter.codePointBefore(text, index, limit) was suppose to return an exception " +
+                        "when the parameter limit of " + negative_cases[i] + " is a negative number.");
+            } catch(Exception e) {}
+        }
+        
+        for(int i=0; i < index_cases.length; i++){
+            try{
+                UCharacter.codePointBefore(dummy, index_cases[i], 101);
+                errln("UCharacter.codePointBefore(text, index, limit) was suppose to return an exception " +
+                        "when the parameter index of " + index_cases[i] + " is a negative number.");
+            } catch(Exception e) {}
+        }
+    }
+
+    /*
+     * The following method tests
+     *      public static final int toChars(int cp, char[] dst, int dstIndex)
+     *      public static final char[] toChars(int cp)
+     */
+    public void TestToChars(){
+        int[] positive_cases = {1,2,5,10,100};
+        char[] dst = {'a'};
+        
+        /* Testing UCharacter.toChars(cp, dst, dstIndex) */
+        for(int i=0; i < positive_cases.length; i++){
+            // Testing negative values when cp < 0 for if (cp >= 0)
+            try{
+                UCharacter.toChars(-1*positive_cases[i],dst,0);
+                errln("UCharacter.toChars(int,char[],int) was suppose to return an exception " +
+                        "when the parameter " + (-1*positive_cases[i]) + " is a negative number.");
+            } catch(Exception e){
+            }
+            
+            // Testing when "if (cp < MIN_SUPPLEMENTARY_CODE_POINT)" is true
+            if(UCharacter.toChars(UCharacter.MIN_SUPPLEMENTARY_CODE_POINT-positive_cases[i], dst, 0) != 1){
+                errln("UCharacter.toChars(int,char[],int) was suppose to return a value of 1. Got: " +
+                        UCharacter.toChars(UCharacter.MIN_SUPPLEMENTARY_CODE_POINT-positive_cases[i], dst, 0));
+            }
+            
+            // Testing when "if (cp < MIN_SUPPLEMENTARY_CODE_POINT)" is false and
+            //     when "if (cp <= MAX_CODE_POINT)" is false
+            try{
+                UCharacter.toChars(UCharacter.MAX_CODE_POINT+positive_cases[i],dst,0);
+                errln("UCharacter.toChars(int,char[],int) was suppose to return an exception " +
+                        "when the parameter " + (UCharacter.MAX_CODE_POINT+positive_cases[i]) +
+                        " is a large number.");
+            } catch(Exception e){
+            }
+        }
+        
+        
+        /* Testing UCharacter.toChars(cp)*/
+        for(int i=0; i<positive_cases.length; i++){
+            // Testing negative values when cp < 0 for if (cp >= 0)
+            try{
+                UCharacter.toChars(-1*positive_cases[i]);
+                errln("UCharacter.toChars(cint) was suppose to return an exception " +
+                        "when the parameter " + positive_cases[i] + " is a negative number.");
+            } catch(Exception e){
+            }
+            
+            // Testing when "if (cp < MIN_SUPPLEMENTARY_CODE_POINT)" is true
+            if(UCharacter.toChars(UCharacter.MIN_SUPPLEMENTARY_CODE_POINT-positive_cases[i]).length <= 0){
+                errln("UCharacter.toChars(int) was suppose to return some result result when the parameter " +
+                        (UCharacter.MIN_SUPPLEMENTARY_CODE_POINT-positive_cases[i]) + "is passed.");
+            }
+            
+            // Testing when "if (cp < MIN_SUPPLEMENTARY_CODE_POINT)" is false and
+            //     when "if (cp <= MAX_CODE_POINT)" is false
+            try{
+                UCharacter.toChars(UCharacter.MAX_CODE_POINT+positive_cases[i]);
+                errln("UCharacter.toChars(int) was suppose to return an exception " +
+                        "when the parameter " + positive_cases[i] + " is a large number.");
+            } catch(Exception e){
+            }
+        }
+    }
+
+    /*
+     * The following method tests
+     *      public static int codePointCount(CharSequence text, int start, int limit)
+     *      public static int codePointCount(char[] text, int start, int limit)
+     */
+    public void TestCodePointCount(){
+        // The following tests the first if statement to make it true:
+        //  if (start < 0 || limit < start || limit > text.length)
+        //  which will throw an exception.
+        char[] empty_text = {};
+        char[] one_char_text = {'a'};
+        char[] reg_text = {'d','u','m','m','y'};
+        int[] invalid_startCases = {-1,-2,-5,-10,-100};
+        int[] limitCases = {2,3,5,10,25};
+        
+        // When start < 0
+        for(int i=0; i < invalid_startCases.length; i++){
+            try{
+                UCharacter.codePointCount(reg_text, invalid_startCases[i], 1);
+                errln("UCharacter.codePointCount was suppose to return an exception " +
+                        "but got " + UCharacter.codePointCount(reg_text, invalid_startCases[i], 1) +
+                        ". The following passed parameters were Text: " + reg_text.toString() + ", Start: " + 
+                        invalid_startCases[i] + ", Limit: " + 1 + ".");
+            } catch(Exception e){
+            }
+        }
+
+        // When limit < start
+        for(int i=0; i < limitCases.length; i++){
+            try{
+                UCharacter.codePointCount(reg_text, 100, limitCases[i]);
+                errln("UCharacter.codePointCount was suppose to return an exception " +
+                        "but got " + UCharacter.codePointCount(reg_text, 100, limitCases[i]) +
+                        ". The following passed parameters were Text: " + reg_text.toString() + ", Start: " + 
+                        100 + ", Limit: " + limitCases[i] + ".");
+            } catch(Exception e){
+            }
+        }
+        
+        // When limit > text.length
+        for(int i=0; i < limitCases.length; i++){
+            try{
+                UCharacter.codePointCount(empty_text, 0, limitCases[i]);
+                errln("UCharacter.codePointCount was suppose to return an exception " +
+                        "but got " + UCharacter.codePointCount(empty_text, 0, limitCases[i]) +
+                        ". The following passed parameters were Text: " + empty_text.toString() + ", Start: " + 
+                        0 + ", Limit: " + limitCases[i] + ".");
+            } catch(Exception e){
+            }
+            
+            try{
+                UCharacter.codePointCount(one_char_text, 0, limitCases[i]);
+                errln("UCharacter.codePointCount was suppose to return an exception " +
+                        "but got " + UCharacter.codePointCount(one_char_text, 0, limitCases[i]) +
+                        ". The following passed parameters were Text: " + one_char_text.toString() + ", Start: " + 
+                        0 + ", Limit: " + limitCases[i] + ".");
+            } catch(Exception e){
+            }
+        }
+    }
+    
+    /*
+     * The following method tests
+     *      private static int getEuropeanDigit(int ch)
+     * The method needs to use the method "digit" in order to access the
+     * getEuropeanDigit method.
+     */
+    public void TestGetEuropeanDigit(){
+        //The number retrieved from 0xFF41 to 0xFF5A is due to
+        //  exhaustive testing from UTF16.CODEPOINT_MIN_VALUE to
+        //  UTF16.CODEPOINT_MAX_VALUE return a value of -1.
+        
+        int[] radixResult = {
+                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};
+        int[] radixCase1 = {0,1,5,10};
+        int[] radixCase2 = {100,250,500,1000};
+        
+        for(int i=0xFF41; i<=0xFF5A; i++){
+            for(int j=0; j < radixCase1.length; j++){
+                if(UCharacter.digit(i, radixCase1[j]) != -1){
+                    errln("UCharacter.digit(int,int) was suppose to return -1 for radix " + radixCase1[j]
+                            + ". Value passed: " + i + ". Got: " + UCharacter.digit(i, radixCase1[j]));
+                }
+            }
+            for(int j=0; j < radixCase2.length; j++){
+                if(UCharacter.digit(i, radixCase2[j]) != radixResult[i-0xFF41]){
+                    errln("UCharacter.digit(int,int) was suppose to return " +
+                            radixResult[i-0xFF41] + " for radix " + radixCase2[j] +
+                            ". Value passed: " + i + ". Got: " + UCharacter.digit(i, radixCase2[j]));
+                }
+            }
+        }
+    }
+    
+    /* Tests the method
+     *      private static final int getProperty(int ch)
+     * from public static int getType(int ch)
+     */
+    public void TestGetProperty(){
+        int[] cases = {UTF16.CODEPOINT_MAX_VALUE+1, UTF16.CODEPOINT_MAX_VALUE+2};
+        for(int i=0; i < cases.length; i++)
+            if(UCharacter.getType(cases[i]) != 0)
+                errln("UCharacter.getType for testing UCharacter.getProperty "
+                        + "did not return 0 for passed value of " + cases[i] +
+                        " but got " + UCharacter.getType(cases[i]));
+    }
+    
+    /* Tests the class
+     *      abstract public static class XSymbolTable implements SymbolTable
+     */
+    public void TestXSymbolTable(){
+        class MyXSymbolTable extends UnicodeSet.XSymbolTable {}
+        MyXSymbolTable st = new MyXSymbolTable();
+        
+        // Tests "public UnicodeMatcher lookupMatcher(int i)"
+        if(st.lookupMatcher(0) != null)
+            errln("XSymbolTable.lookupMatcher(int i) was suppose to return null.");
+        
+        // Tests "public boolean applyPropertyAlias(String propertyName, String propertyValue, UnicodeSet result)"
+        if(st.applyPropertyAlias("", "", new UnicodeSet()) != false)
+            errln("XSymbolTable.applyPropertyAlias(String propertyName, String propertyValue, UnicodeSet result) was suppose to return false.");
+
+        // Tests "public char[] lookup(String s)"
+        if(st.lookup("") != null)
+            errln("XSymbolTable.lookup(String s) was suppose to return null.");
+        
+        // Tests "public String parseReference(String text, ParsePosition pos, int limit)"
+        if(st.parseReference("", null, 0) != null)
+            errln("XSymbolTable.parseReference(String text, ParsePosition pos, int limit) was suppose to return null.");
+    }
+    
+    /* Tests the method
+     *      public boolean isFrozen()
+     */
+    public void TestIsFrozen(){
+        UnicodeSet us = new UnicodeSet();
+        if(us.isFrozen() != false)
+            errln("Unicode.isFrozen() was suppose to return false.");
+        
+        us.freeze();
+        if(us.isFrozen() != true)
+            errln("Unicode.isFrozen() was suppose to return true.");
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterThreadTest.java b/main/tests/core/src/com/ibm/icu/dev/test/lang/UCharacterThreadTest.java
new file mode 100644
index 0000000..9461a65
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/lang/UPropertyAliasesTest.java b/main/tests/core/src/com/ibm/icu/dev/test/lang/UPropertyAliasesTest.java
new file mode 100644
index 0000000..f4888c5
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/lang/UTF16Test.java b/main/tests/core/src/com/ibm/icu/dev/test/lang/UTF16Test.java
new file mode 100644
index 0000000..4026e7b
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/lang/UTF16Test.java
@@ -0,0 +1,1655 @@
+/*
+*******************************************************************************
+* Copyright (C) 1996-2009, 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;
+
+          if (0 != strsize) {
+            strbuff.getChars(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" );
+          }
+          
+          StringBuffer strbuffer = new StringBuffer("0xD805");
+          UTF16.charAt((CharSequence)strbuffer, 0);
+    }
+
+    /**
+     * 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];
+        int srcEnd = strbuff.length();
+        if (0 != srcEnd) {
+            strbuff.getChars(0, srcEnd, 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];
+        int srcEnd = strbuff.length();
+        if (0 != srcEnd) {
+            strbuff.getChars(0, srcEnd, 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/main/tests/core/src/com/ibm/icu/dev/test/lang/UnicodeSetTest.java b/main/tests/core/src/com/ibm/icu/dev/test/lang/UnicodeSetTest.java
new file mode 100644
index 0000000..398a989
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/lang/UnicodeSetTest.java
@@ -0,0 +1,2374 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.lang;
+
+import java.text.NumberFormat;
+import java.text.ParsePosition;
+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.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import com.ibm.icu.dev.test.TestFmwk;
+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;
+import com.ibm.icu.text.UnicodeSet.ComparisonStyle;
+
+/**
+ * @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?)
+
+        // RemoveAllStrings()
+        s.clear();
+        s.applyPattern("[a-z{abc}{def}]");
+        expectToPattern(s, "[a-z{abc}{def}]", null);
+        s.removeAllStrings();
+        expectToPattern(s, "[a-z]", null);
+    }
+
+    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;
+
+        NumberFormat nf = 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;
+
+        NumberFormat nf = 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}]]");
+    }
+
+    public void TestHangulSyllable() {
+        final UnicodeSet lvt = new UnicodeSet("[:Hangul_Syllable_Type=LVT_Syllable:]");
+        assertNotEquals("LVT count", new UnicodeSet(), lvt);
+        logln(lvt + ": " + lvt.size());
+        final UnicodeSet lv = new UnicodeSet("[:Hangul_Syllable_Type=LV_Syllable:]");
+        assertNotEquals("LV count", new UnicodeSet(), lv);
+        logln(lv + ": " + lv.size());
+    }
+
+    /**
+     * 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);
+    }
+
+    /**
+     * Test Generic support
+     */
+    public void TestGenerics() {
+        UnicodeSet set1 = new UnicodeSet("[a-b d-g {ch} {zh}]").freeze();
+        UnicodeSet set2 = new UnicodeSet("[e-f {ch}]").freeze();
+        UnicodeSet set3 = new UnicodeSet("[d m-n {dh}]").freeze();
+        // A useful range of sets for testing, including both characters and strings
+        // set 1 contains set2
+        // set 1 is overlaps with set 3
+        // set 2 is disjoint with set 3
+
+        //public Iterator<String> iterator() {
+
+        ArrayList<String> oldList = new ArrayList<String>();
+        for (UnicodeSetIterator it = new UnicodeSetIterator(set1); it.next();) {
+            oldList.add(it.getString());
+        }
+
+        ArrayList<String> list1 = new ArrayList<String>();
+        for (String s : set1) {
+            list1.add(s);
+        }
+        assertEquals("iteration test", oldList, list1);
+
+        //addAllTo(Iterable<T>, U)
+        list1.clear();
+        set1.addAllTo(list1);
+        assertEquals("iteration test", oldList, list1);
+
+        list1 = set1.addAllTo(new ArrayList<String>());
+        assertEquals("addAllTo", oldList, list1);
+
+        ArrayList<String> list2 = set2.addAllTo(new ArrayList<String>());
+        ArrayList<String> list3 = set3.addAllTo(new ArrayList<String>());
+
+        // put them into different order, to check that order doesn't matter
+        TreeSet sorted1 = set1.addAllTo(new TreeSet<String>());
+        TreeSet sorted2 = set2.addAllTo(new TreeSet<String>());
+        TreeSet sorted3 = set3.addAllTo(new TreeSet<String>());
+
+        //containsAll(Collection<String> collection)
+        assertTrue("containsAll", set1.containsAll(list1));
+        assertTrue("containsAll", set1.containsAll(sorted1));
+        assertTrue("containsAll", set1.containsAll(list2));
+        assertTrue("containsAll", set1.containsAll(sorted2));
+        assertFalse("containsAll", set1.containsAll(list3));
+        assertFalse("containsAll", set1.containsAll(sorted3));
+        assertFalse("containsAll", set2.containsAll(list3));
+        assertFalse("containsAll", set2.containsAll(sorted3));
+
+        //containsSome(Collection<String>)
+        assertTrue("containsSome", set1.containsSome(list1));
+        assertTrue("containsSome", set1.containsSome(sorted1));
+        assertTrue("containsSome", set1.containsSome(list2));
+        assertTrue("containsSome", set1.containsSome(sorted2));
+        assertTrue("containsSome", set1.containsSome(list3));
+        assertTrue("containsSome", set1.containsSome(sorted3));
+        assertFalse("containsSome", set2.containsSome(list3));
+        assertFalse("containsSome", set2.containsSome(sorted3));
+
+        //containsNone(Collection<String>)
+        assertFalse("containsNone", set1.containsNone(list1));
+        assertFalse("containsNone", set1.containsNone(sorted1));
+        assertFalse("containsNone", set1.containsNone(list2));
+        assertFalse("containsNone", set1.containsNone(sorted2));
+        assertFalse("containsNone", set1.containsNone(list3));
+        assertFalse("containsNone", set1.containsNone(sorted3));
+        assertTrue("containsNone", set2.containsNone(list3));
+        assertTrue("containsNone", set2.containsNone(sorted3));
+
+        //addAll(String...)
+        UnicodeSet other3 = new UnicodeSet().addAll("d", "m", "n", "dh");
+        assertEquals("addAll", set3, other3);
+
+        //removeAll(Collection<String>)
+        UnicodeSet mod1 = new UnicodeSet(set1).removeAll(set2);
+        UnicodeSet mod2 = new UnicodeSet(set1).removeAll(list2);
+        assertEquals("remove all", mod1, mod2);
+
+        //retainAll(Collection<String>)
+        mod1 = new UnicodeSet(set1).retainAll(set2);
+        mod2 = new UnicodeSet(set1).retainAll(set2.addAllTo(new LinkedHashSet<String>()));
+        assertEquals("remove all", mod1, mod2);
+    }
+    
+    public void TestComparison() {
+        UnicodeSet set1 = new UnicodeSet("[a-b d-g {ch} {zh}]").freeze();
+        UnicodeSet set2 = new UnicodeSet("[c-e {ch}]").freeze();
+        UnicodeSet set3 = new UnicodeSet("[d m-n z {dh}]").freeze();
+
+        //compareTo(UnicodeSet)
+        // do indirectly, by sorting
+        List<UnicodeSet> unsorted = Arrays.asList(set3, set2, set1);
+        List<UnicodeSet> goalShortest = Arrays.asList(set2, set3, set1);
+        List<UnicodeSet> goalLongest = Arrays.asList(set1, set3, set2);
+        List<UnicodeSet> goalLex = Arrays.asList(set1, set2, set3);
+
+        List<UnicodeSet> sorted = new ArrayList(new TreeSet<UnicodeSet>(unsorted));
+        assertNotEquals("compareTo-shorter-first", unsorted, sorted);
+        assertEquals("compareTo-shorter-first", goalShortest, sorted);
+        
+        TreeSet<UnicodeSet> sorted1 = new TreeSet<UnicodeSet>(new Comparator<UnicodeSet>(){
+            public int compare(UnicodeSet o1, UnicodeSet o2) {
+                // TODO Auto-generated method stub
+                return o1.compareTo(o2, ComparisonStyle.LONGER_FIRST);
+            }});
+        sorted1.addAll(unsorted);
+        sorted = new ArrayList(sorted1);
+        assertNotEquals("compareTo-longer-first", unsorted, sorted);
+        assertEquals("compareTo-longer-first", goalLongest, sorted);
+
+        sorted1 = new TreeSet<UnicodeSet>(new Comparator<UnicodeSet>(){
+            public int compare(UnicodeSet o1, UnicodeSet o2) {
+                // TODO Auto-generated method stub
+                return o1.compareTo(o2, ComparisonStyle.LEXICOGRAPHIC);
+            }});
+        sorted1.addAll(unsorted);
+        sorted = new ArrayList(sorted1);
+        assertNotEquals("compareTo-lex", unsorted, sorted);
+        assertEquals("compareTo-lex", goalLex, sorted);
+
+        //compare(String, int)
+        // make a list of interesting combinations
+        List<String> sources = Arrays.asList("\u0000", "a", "b", "\uD7FF", "\uD800", "\uDBFF", "\uDC00", "\uDFFF", "\uE000", "\uFFFD", "\uFFFF");
+        TreeSet<String> target = new TreeSet<String>();
+        for (String s : sources) {
+            target.add(s);
+            for (String t : sources) {
+                target.add(s + t);
+                for (String u : sources) {
+                    target.add(s + t + u);
+                }
+            }
+        }
+        // now compare all the combinations. If any of them is a code point, use it.
+        for (String last : target) {
+            for (String curr : target) {
+                int lastCount = Character.codePointCount(last, 0, last.length());
+                int currCount = Character.codePointCount(curr, 0, curr.length());
+                int comparison;
+                if (lastCount == 1) {
+                    comparison = UnicodeSet.compare(last.codePointAt(0), curr);
+                } else if (currCount == 1) {
+                    comparison = UnicodeSet.compare(last, curr.codePointAt(0));
+                } else {
+                    continue;
+                }
+                if (comparison != last.compareTo(curr)) {
+                    // repeat for debugging
+                    if (lastCount == 1) {
+                        comparison = UnicodeSet.compare(last.codePointAt(0), curr);
+                    } else if (currCount == 1) {
+                        comparison = UnicodeSet.compare(last, curr.codePointAt(0));
+                    }
+                    errln("Failure in comparing " + last + " & " + curr);
+                }
+            }
+        }
+        
+        //compare(Iterable<T>, Iterable<T>)
+        int max = 10;
+        List<String> test1 = new ArrayList<String>(max);
+        List<String> test2 = new ArrayList<String>(max);
+        for (int i = 0; i <= max; ++i) {
+            test1.add("a" + i);
+            test2.add("a" + (max - i)); // add in reverse order
+        }
+        assertNotEquals("compare iterable test", test1, test2);
+        TreeSet<CharSequence> sortedTest1 = new TreeSet<CharSequence>(test1);
+        TreeSet<CharSequence> sortedTest2 = new TreeSet<CharSequence>(test2);
+        assertEquals("compare iterable test", sortedTest1, sortedTest2);
+    }
+
+    public void TestRangeConstructor() {
+        UnicodeSet w = new UnicodeSet().addAll(3,5);
+        UnicodeSet s = new UnicodeSet(3,5);
+        assertEquals("new constructor", w, s);
+
+        w = new UnicodeSet().addAll(3,5).addAll(7,7);
+        UnicodeSet t = new UnicodeSet(3,5, 7,7);
+        assertEquals("new constructor", w, t);
+        // check to make sure right exceptions are thrown
+        Class expected = IllegalArgumentException.class;
+        Class actual;
+        
+        try {
+            actual = null;
+            @SuppressWarnings("unused")
+            UnicodeSet u = new UnicodeSet(5);
+        } catch (IllegalArgumentException e) {
+            actual = e.getClass();
+        }
+        assertEquals("exception if odd", expected, actual);
+        
+        try {
+            actual = null;
+            @SuppressWarnings("unused")
+            UnicodeSet u = new UnicodeSet(3, 2, 7, 9);
+        } catch (IllegalArgumentException e) {
+            actual = e.getClass();
+        }
+        assertEquals("exception for start/end problem", expected, actual);
+        
+        try {
+            actual = null;
+            @SuppressWarnings("unused")
+            UnicodeSet u = new UnicodeSet(3, 5, 6, 9);
+        } catch (IllegalArgumentException e) {
+            actual = e.getClass();
+        }
+        assertEquals("exception for end/start problem", expected, actual);
+        
+        CheckRangeSpeed(10000, new UnicodeSet("[:whitespace:]"));
+        CheckRangeSpeed(1000, new UnicodeSet("[:letter:]"));
+    }
+
+    /**
+     * @param iterations
+     * @param testSet
+     */
+    private void CheckRangeSpeed(int iterations, UnicodeSet testSet) {
+        testSet.complement().complement();
+        String testPattern = testSet.toString();
+        // fill a set of pairs from the pattern
+        int[] pairs = new int[testSet.getRangeCount()*2];
+        int j = 0;
+        for (UnicodeSetIterator it = new UnicodeSetIterator(testSet); it.nextRange();) {
+            pairs[j++] = it.codepoint;
+            pairs[j++] = it.codepointEnd;
+        }
+        UnicodeSet fromRange = new UnicodeSet(testSet);
+        assertEquals("from range vs pattern", testSet, fromRange);
+
+        double start = System.currentTimeMillis();
+        for (int i = 0; i < iterations; ++i) {
+            fromRange = new UnicodeSet(testSet);
+        }
+        double middle = System.currentTimeMillis();
+        for (int i = 0; i < iterations; ++i) {
+            new UnicodeSet(testPattern);
+        }
+        double end = System.currentTimeMillis();
+
+        double rangeConstructorTime = (middle - start)/iterations;
+        double patternConstructorTime = (end - middle)/iterations;
+        String message = "Range constructor:\t" + rangeConstructorTime + ";\tPattern constructor:\t" + patternConstructorTime + "\t\t"
+        + percent.format(rangeConstructorTime/patternConstructorTime-1);
+        if (rangeConstructorTime < 2*patternConstructorTime) {
+            logln(message);
+        } else {
+            errln(message);
+        }
+    }
+    
+    NumberFormat percent = NumberFormat.getPercentInstance();
+    {
+        percent.setMaximumFractionDigits(2);
+    }
+    // ****************************************
+    // UTILITIES
+    // ****************************************
+
+    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");
+                    }
+                }
+            }
+    }
+
+// Following cod block is commented out to eliminate PrettyPrinter depenencies
+
+//    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);
+    }
+
+    /* Test the method public UnicodeSet getSet() */
+    public void TestGetSet() {
+        UnicodeSetIterator us = new UnicodeSetIterator();
+        try {
+            us.getSet();
+        } catch (Exception e) {
+            errln("UnicodeSetIterator.getSet() was not suppose to given an " + "an exception.");
+        }
+    }
+    
+    /* Tests the method public UnicodeSet add(Collection<?> source) */
+    public void TestAddCollection() {
+        UnicodeSet us = new UnicodeSet();
+        Collection<?> s = null;
+        try {
+            us.add(s);
+            errln("UnicodeSet.add(Collection<?>) was suppose to return an exception for a null parameter.");
+        } catch (Exception e) {
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/normalizer/BasicTest.java b/main/tests/core/src/com/ibm/icu/dev/test/normalizer/BasicTest.java
new file mode 100644
index 0000000..94771d4
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/normalizer/BasicTest.java
@@ -0,0 +1,2937 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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/main/tests/core/src/com/ibm/icu/dev/test/normalizer/ConformanceTest.java b/main/tests/core/src/com/ibm/icu/dev/test/normalizer/ConformanceTest.java
new file mode 100644
index 0000000..359d199
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/normalizer/IntHashtable.java b/main/tests/core/src/com/ibm/icu/dev/test/normalizer/IntHashtable.java
new file mode 100644
index 0000000..71e9a1f
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/normalizer/IntStringHashtable.java b/main/tests/core/src/com/ibm/icu/dev/test/normalizer/IntStringHashtable.java
new file mode 100644
index 0000000..e8eef4c
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/normalizer/LongHashtable.java b/main/tests/core/src/com/ibm/icu/dev/test/normalizer/LongHashtable.java
new file mode 100644
index 0000000..35d2b22
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizationMonkeyTest.java b/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizationMonkeyTest.java
new file mode 100644
index 0000000..a36bac9
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizerBuilder.java b/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizerBuilder.java
new file mode 100644
index 0000000..6308478
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizerData.java b/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizerData.java
new file mode 100644
index 0000000..c6c54a7
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizerRegressionTests.java b/main/tests/core/src/com/ibm/icu/dev/test/normalizer/NormalizerRegressionTests.java
new file mode 100644
index 0000000..558e677
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/normalizer/TestAll.java b/main/tests/core/src/com/ibm/icu/dev/test/normalizer/TestAll.java
new file mode 100644
index 0000000..ba236ed
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/normalizer/TestCanonicalIterator.java b/main/tests/core/src/com/ibm/icu/dev/test/normalizer/TestCanonicalIterator.java
new file mode 100644
index 0000000..c135068
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/normalizer/TestDeprecatedNormalizerAPI.java b/main/tests/core/src/com/ibm/icu/dev/test/normalizer/TestDeprecatedNormalizerAPI.java
new file mode 100644
index 0000000..f49d711
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizer.java b/main/tests/core/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizer.java
new file mode 100644
index 0000000..ed9d722
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizerConformanceTest.java b/main/tests/core/src/com/ibm/icu/dev/test/normalizer/UnicodeNormalizerConformanceTest.java
new file mode 100644
index 0000000..6605e93
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/normalizer/package.html b/main/tests/core/src/com/ibm/icu/dev/test/normalizer/package.html
new file mode 100644
index 0000000..d7a927a
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRegTest.java b/main/tests/core/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRegTest.java
new file mode 100644
index 0000000..a30b2b5
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRules_en_US_TEST.java b/main/tests/core/src/com/ibm/icu/dev/test/rbbi/BreakIteratorRules_en_US_TEST.java
new file mode 100644
index 0000000..2d353a4
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/rbbi/BreakIteratorTest.java b/main/tests/core/src/com/ibm/icu/dev/test/rbbi/BreakIteratorTest.java
new file mode 100644
index 0000000..92d2f1a
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/rbbi/BreakIteratorTest.java
@@ -0,0 +1,899 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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 com.ibm.icu.text.DictionaryBasedBreakIterator;
+
+import java.io.DataInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+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());
+        }
+    }
+    
+    /*
+     * Tests the constructors public DictionaryBasedBreakIterator(String rules, ... public
+     * DictionaryBasedBreakIterator(InputStream compiledRules, ...
+     */
+    public void TestDictionaryBasedBreakIterator() throws IOException {
+        // The following class allows the testing of the constructor
+        // public DictionaryBasedBreakIterator(String rules, ...
+        class TestDictionaryBasedBreakIterator extends DictionaryBasedBreakIterator {
+            public TestDictionaryBasedBreakIterator(InputStream is) throws IOException {
+                super("", is);
+            }
+        }
+        try {
+            @SuppressWarnings("unused")
+            TestDictionaryBasedBreakIterator td = new TestDictionaryBasedBreakIterator(null);
+            errln("DictionaryBasedBreakIterator constructor is suppose to return an "
+                    + "exception for an empty string.");
+        } catch (Exception e) {
+        }
+        
+        try {
+            File file = File.createTempFile("dummy", "");
+            FileInputStream fis = new FileInputStream(file);
+            DataInputStream dis = new DataInputStream(fis);
+            @SuppressWarnings("unused")
+            TestDictionaryBasedBreakIterator td = new TestDictionaryBasedBreakIterator(dis);
+            errln("DictionaryBasedBreakIterator constructor is suppose to return an "
+                    + "exception for a temporary file with EOF.");
+        } catch (Exception e) {
+        }
+        
+        // The following class allows the testing of the constructor
+        // public DictionaryBasedBreakIterator(InputStream compiledRules, ...
+        class TestDictionaryBasedBreakIterator1 extends DictionaryBasedBreakIterator {
+            public TestDictionaryBasedBreakIterator1() throws IOException {
+                super((InputStream) null, (InputStream) null);
+            }
+
+        }
+        try {
+            @SuppressWarnings("unused")
+            TestDictionaryBasedBreakIterator1 td1 = new TestDictionaryBasedBreakIterator1();
+            errln("DictionaryBasedBreakIterator constructor is suppose to return an "
+                    + "exception for an null input stream.");
+        } catch (Exception e) {
+        }
+    }   
+}
\ No newline at end of file
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBIAPITest.java b/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBIAPITest.java
new file mode 100644
index 0000000..2c31cbb
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBITest.java b/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBITest.java
new file mode 100644
index 0000000..ed93d4b
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBITest.java
@@ -0,0 +1,830 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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.DictionaryBasedBreakIterator;
+import com.ibm.icu.text.RuleBasedBreakIterator;
+import com.ibm.icu.text.BreakIterator;
+import com.ibm.icu.util.ULocale;
+
+import java.text.CharacterIterator;
+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);
+           }
+       }
+       // Improve code coverage
+       if (brk.preceding(expectedLineResult[1]) != expectedLineResult[0]) {
+           errln("Incorrect preceding position.");
+       }
+       if (brk.following(expectedLineResult[1]) != expectedLineResult[2]) {
+           errln("Incorrect following position.");
+       }
+       int []fillInArray = new int[2];
+       if (((DictionaryBasedBreakIterator)brk).getRuleStatusVec(fillInArray) != 1 || fillInArray[0] != 0) {
+           errln("Error: Since getRuleStatusVec is not supported in DictionaryBasedBreakIterator, it should return 1 and fillInArray[0] == 0.");
+       }
+   }
+  
+    public void TestTailoredBreaks() {
+        class TBItem {
+            private int     type;
+            private ULocale locale;
+            private String  text;
+            private int[]   expectOffsets;
+            TBItem(int typ, ULocale loc, String txt, int[] eOffs) {
+                type          = typ;
+                locale        = loc;
+                text          = txt;
+                expectOffsets = eOffs;
+            }
+            private static final int maxOffsetCount = 128;
+            private boolean offsetsMatchExpected(int[] foundOffsets, int foundOffsetsLength) {
+                if ( foundOffsetsLength != expectOffsets.length ) {
+                    return false;
+                }
+                for (int i = 0; i < foundOffsetsLength; i++) {
+                    if ( foundOffsets[i] != expectOffsets[i] ) {
+                        return false;
+                    }
+                }
+                return true;
+            }
+            private String formatOffsets(int[] offsets, int length) {
+                StringBuffer buildString = new StringBuffer(4*maxOffsetCount);
+                for (int i = 0; i < length; i++) {
+                    buildString.append(" " + offsets[i]);
+                }
+                return buildString.toString();
+            }
+            public void doTest() {
+                BreakIterator brkIter;
+                switch( type ) {
+                    case BreakIterator.KIND_CHARACTER: brkIter = BreakIterator.getCharacterInstance(locale); break;
+                    case BreakIterator.KIND_WORD:      brkIter = BreakIterator.getWordInstance(locale); break;
+                    case BreakIterator.KIND_LINE:      brkIter = BreakIterator.getLineInstance(locale); break;
+                    case BreakIterator.KIND_SENTENCE:  brkIter = BreakIterator.getSentenceInstance(locale); break;
+                    default: errln("Unsupported break iterator type " + type); return;
+                }
+                brkIter.setText(text);
+                int[] foundOffsets = new int[maxOffsetCount];
+                int offset, foundOffsetsCount = 0;
+                // do forwards iteration test
+                while ( foundOffsetsCount < maxOffsetCount && (offset = brkIter.next()) != BreakIterator.DONE ) {
+                    foundOffsets[foundOffsetsCount++] = offset;
+                }
+                if ( !offsetsMatchExpected(foundOffsets, foundOffsetsCount) ) {
+                    // log error for forwards test
+                    String textToDisplay = (text.length() <= 16)? text: text.substring(0,16);
+                    errln("For type " + type + " " + locale + ", text \"" + textToDisplay + "...\"" +
+                            "; expect " + expectOffsets.length + " offsets:" + formatOffsets(expectOffsets, expectOffsets.length) +
+                            "; found " + foundOffsetsCount + " offsets fwd:" + formatOffsets(foundOffsets, foundOffsetsCount) );
+                } else {
+                    // do backwards iteration test
+                    --foundOffsetsCount; // back off one from the end offset
+                    while ( foundOffsetsCount > 0 ) {
+                        offset = brkIter.previous();
+                        if ( offset != foundOffsets[--foundOffsetsCount] ) {
+                            // log error for backwards test
+                            String textToDisplay = (text.length() <= 16)? text: text.substring(0,16);
+                            errln("For type " + type + " " + locale + ", text \"" + textToDisplay + "...\"" +
+                                    "; expect " + expectOffsets.length + " offsets:" + formatOffsets(expectOffsets, expectOffsets.length) +
+                                    "; found rev offset " + offset + " where expect " + foundOffsets[foundOffsetsCount] );
+                            break;
+                        }
+                    }
+                }
+            }
+        }
+        // KIND_WORD "en_US_POSIX"
+        final String posxWordText     = "Can't have breaks in xx:yy or struct.field for CS-types.";
+        final int[]  posxWordTOffsets = { 5, 6, 10, 11, 17, 18, 20, 21, 23, 24, 26, 27, 29, 30, 36, 37, 42, 43, 46, 47, 49, 50, 55, 56 };
+        final int[]  posxWordROffsets = { 5, 6, 10, 11, 17, 18, 20, 21,         26, 27, 29, 30,         42, 43, 46, 47, 49, 50, 55, 56 };
+        // KIND_WORD "ja"
+        final String jaWordText     = "\u79C1\u9054\u306B\u4E00\u3007\u3007\u3007\u306E\u30B3\u30F3\u30D4\u30E5\u30FC\u30BF" +
+                                      "\u304C\u3042\u308B\u3002\u5948\u3005\u306F\u30EF\u30FC\u30C9\u3067\u3042\u308B\u3002";
+        final int[]  jaWordTOffsets = {    2, 3,          7, 8, 14,         17, 18,     20, 21, 24,         27, 28 };
+        final int[]  jaWordROffsets = { 1, 2, 3, 4, 5, 6, 7, 8, 14, 15, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28 };
+        // KIND_SENTENCE "el"
+        final String elSentText     = "\u0391\u03B2, \u03B3\u03B4; \u0395 \u03B6\u03B7\u037E \u0398 \u03B9\u03BA. " +
+                                      "\u039B\u03BC \u03BD\u03BE! \u039F\u03C0, \u03A1\u03C2? \u03A3";
+        final int[]  elSentTOffsets = { 8, 14, 20, 27, 35, 36 };
+        final int[]  elSentROffsets = {        20, 27, 35, 36 };
+        // KIND_CHARACTER "th"
+        final String thCharText     = "\u0E01\u0E23\u0E30\u0E17\u0E48\u0E2D\u0E21\u0E23\u0E08\u0E19\u0E32 " +
+                                      "(\u0E2A\u0E38\u0E0A\u0E32\u0E15\u0E34-\u0E08\u0E38\u0E11\u0E32\u0E21\u0E32\u0E28) " +
+                                      "\u0E40\u0E14\u0E47\u0E01\u0E21\u0E35\u0E1B\u0E31\u0E0D\u0E2B\u0E32 ";
+        final int[]  thCharTOffsets = { 1, 2, 3, 5, 6, 7, 8, 9, 10, 11,
+                                        12, 13, 15, 16, 17, 19, 20, 22, 23, 24, 25, 26, 27, 28,
+                                        29, 30, 32, 33, 35, 37, 38, 39, 40, 41 };
+        final int[]  thCharROffsets = { 1,    3, 5, 6, 7, 8, 9,     11,
+                                        12, 13, 15,     17, 19, 20, 22,     24,     26, 27, 28,
+                                        29,     32, 33, 35, 37, 38,     40, 41 };
+        
+        final TBItem[] tests = {
+            new TBItem( BreakIterator.KIND_WORD,      new ULocale("en_US_POSIX"), posxWordText, posxWordTOffsets ),
+            new TBItem( BreakIterator.KIND_WORD,      ULocale.ROOT,               posxWordText, posxWordROffsets ),
+            new TBItem( BreakIterator.KIND_WORD,      new ULocale("ja"),          jaWordText,   jaWordTOffsets   ),
+            new TBItem( BreakIterator.KIND_WORD,      ULocale.ROOT,               jaWordText,   jaWordROffsets   ),
+            new TBItem( BreakIterator.KIND_SENTENCE,  new ULocale("el"),          elSentText,   elSentTOffsets   ),
+            new TBItem( BreakIterator.KIND_SENTENCE,  ULocale.ROOT,               elSentText,   elSentROffsets   ),
+            new TBItem( BreakIterator.KIND_CHARACTER, new ULocale("th"),          thCharText,   thCharTOffsets   ),
+            new TBItem( BreakIterator.KIND_CHARACTER, ULocale.ROOT,               thCharText,   thCharROffsets   ),
+        };
+        for (int iTest = 0; iTest < tests.length; iTest++) {
+            tests[iTest].doTest();
+        }
+    }
+
+    /* Tests the method public Object clone() */
+    public void TestClone() {
+        RuleBasedBreakIterator rbbi = new RuleBasedBreakIterator();
+        try {
+            rbbi.setText((CharacterIterator) null);
+            if (((RuleBasedBreakIterator) rbbi.clone()).getText() != null)
+                errln("RuleBasedBreakIterator.clone() was suppose to return "
+                        + "the same object because fText is set to null.");
+        } catch (Exception e) {
+            errln("RuleBasedBreakIterator.clone() was not suppose to return " + "an exception.");
+        }
+    }
+
+    /*
+     * Tests the method public boolean equals(Object that)
+     */
+    public void TestEquals() {
+        RuleBasedBreakIterator rbbi = new RuleBasedBreakIterator("");
+        RuleBasedBreakIterator rbbi1 = new RuleBasedBreakIterator("");
+
+        // TODO: Tests when "if (fRData != other.fRData && (fRData == null || other.fRData == null))" is true
+
+        // Tests when "if (fText == null || other.fText == null)" is true
+        rbbi.setText((CharacterIterator) null);
+        if (rbbi.equals(rbbi1)) {
+            errln("RuleBasedBreakIterator.equals(Object) was not suppose to return "
+                    + "true when the other object has a null fText.");
+        }
+
+        // Tests when "if (fText == null && other.fText == null)" is true
+        rbbi1.setText((CharacterIterator) null);
+        if (!rbbi.equals(rbbi1)) {
+            errln("RuleBasedBreakIterator.equals(Object) was not suppose to return "
+                    + "false when both objects has a null fText.");
+        }
+
+        // Tests when an exception occurs
+        if (rbbi.equals(0)) {
+            errln("RuleBasedBreakIterator.equals(Object) was suppose to return " + "false when comparing to integer 0.");
+        }
+        if (rbbi.equals(0.0)) {
+            errln("RuleBasedBreakIterator.equals(Object) was suppose to return " + "false when comparing to float 0.0.");
+        }
+        if (rbbi.equals("0")) {
+            errln("RuleBasedBreakIterator.equals(Object) was suppose to return "
+                    + "false when comparing to string '0'.");
+        }
+    }
+
+    /*
+     * Tests the method public void dump()
+     */
+    public void TestDump() {
+        RuleBasedBreakIterator rbbi = new RuleBasedBreakIterator();
+        try {
+            rbbi.dump();
+            errln("RuleBasedBreakIterator.dump() was suppose to return "
+                    + "an exception for a blank RuleBasedBreakIterator object.");
+        } catch (Exception e) {
+        }
+    }
+    
+    /*
+     * Tests the method public int first()
+     */
+    public void TestFirst() {
+        RuleBasedBreakIterator rbbi = new RuleBasedBreakIterator("");
+        // Tests when "if (fText == null)" is true
+        rbbi.setText((CharacterIterator) null);
+        if (rbbi.first() != BreakIterator.DONE) {
+            errln("RuleBasedBreakIterator.first() was suppose to return "
+                    + "BreakIterator.DONE when the object has a null fText.");
+        }
+    }
+    
+    /*
+     * Tests the method public int last()
+     */
+    public void TestLast() {
+        RuleBasedBreakIterator rbbi = new RuleBasedBreakIterator("");
+        // Tests when "if (fText == null)" is true
+        rbbi.setText((CharacterIterator) null);
+        if (rbbi.last() != BreakIterator.DONE) {
+            errln("RuleBasedBreakIterator.last() was suppose to return "
+                    + "BreakIterator.DONE when the object has a null fText.");
+        }
+    }
+    
+    /*
+     * Tests the method public int following(int offset)
+     */
+    public void TestFollowing() {
+        RuleBasedBreakIterator rbbi = new RuleBasedBreakIterator("");
+        // Tests when "else if (offset < fText.getBeginIndex())" is true
+        rbbi.setText("dummy");
+        if (rbbi.following(-1) != 0) {
+            errln("RuleBasedBreakIterator.following(-1) was suppose to return "
+                    + "0 when the object has a fText of dummy.");
+        }
+    }
+    
+    /*
+     * Tests the method public int preceding(int offset)
+     */
+    public void TestPreceding() {
+        RuleBasedBreakIterator rbbi = new RuleBasedBreakIterator("");
+        // Tests when "if (fText == null || offset > fText.getEndIndex())" is true
+        rbbi.setText((CharacterIterator)null);
+        if (rbbi.preceding(-1) != BreakIterator.DONE) {
+            errln("RuleBasedBreakIterator.preceding(-1) was suppose to return "
+                    + "0 when the object has a fText of null.");
+        }
+        
+        // Tests when "else if (offset < fText.getBeginIndex())" is true
+        rbbi.setText("dummy");
+        if (rbbi.preceding(-1) != 0) {
+            errln("RuleBasedBreakIterator.preceding(-1) was suppose to return "
+                    + "0 when the object has a fText of dummy.");
+        }
+    }
+    
+    /* Tests the method public int current() */
+    public void TestCurrent(){
+        RuleBasedBreakIterator rbbi = new RuleBasedBreakIterator("");
+        // Tests when "(fText != null) ? fText.getIndex() : BreakIterator.DONE" is true and false
+        rbbi.setText((CharacterIterator)null);
+        if(rbbi.current() != BreakIterator.DONE){
+            errln("RuleBasedBreakIterator.current() was suppose to return "
+                    + "BreakIterator.DONE when the object has a fText of null.");
+        }
+        rbbi.setText("dummy");
+        if(rbbi.current() != 0){
+            errln("RuleBasedBreakIterator.current() was suppose to return "
+                    + "0 when the object has a fText of dummy.");
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBITestExtended.java b/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBITestExtended.java
new file mode 100644
index 0000000..6a5f969
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBITestMonkey.java b/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBITestMonkey.java
new file mode 100644
index 0000000..39f4add
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/rbbi/RBBITestMonkey.java
@@ -0,0 +1,2004 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2009 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;
+        }
+        
+    }
+
+ 
+    // TODO:  for class fCP, fCL: when Unicode 5.2 properties become available, change the definitions of
+    //        these classes to use them.
+    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  fCP;
+        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}]-[\\u0029\\u005d]]");
+            fCP    = new UnicodeSet("[\\u0029\\u005d]");
+            // fCP    = new UnicodeSet("[\\p{Line_break=CP}]");
+            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(fCP);
+            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, NU x CP  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) ||
+                    !fNU.contains(prevChar) && fCP.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 | CP) 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)) || fCP.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    Do not break between letters, numbers, or ordinary symbols and opening or closing punctuation.
+                //          (AL | NU) x OP
+                //          CP x (AL | NU)
+                if ((fAL.contains(prevChar) || fNU.contains(prevChar)) && fOP.contains(thisChar)) {
+                    continue;
+                }
+                if (fCP.contains(prevChar) && (fAL.contains(thisChar) || fNU.contains(thisChar))) {
+                    continue;
+                }
+
+              
+                // 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 | CP) CM*)?  (PR | PO) CM*)?
+        //      0    0   1       3    3    4              7    7    7    7      9    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.CLOSE_PARENTHESIS) {
+                        //    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/main/tests/core/src/com/ibm/icu/dev/test/rbbi/SimpleBITest.java b/main/tests/core/src/com/ibm/icu/dev/test/rbbi/SimpleBITest.java
new file mode 100644
index 0000000..c659e6a
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/rbbi/TestAll.java b/main/tests/core/src/com/ibm/icu/dev/test/rbbi/TestAll.java
new file mode 100644
index 0000000..c767550
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/rbbi/package.html b/main/tests/core/src/com/ibm/icu/dev/test/rbbi/package.html
new file mode 100644
index 0000000..62468ad
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/rbbi/rbbitst.txt b/main/tests/core/src/com/ibm/icu/dev/test/rbbi/rbbitst.txt
new file mode 100644
index 0000000..4f3d037
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/rbbi/rbbitst.txt
@@ -0,0 +1,582 @@
+﻿# Copyright (c) 2001-2009 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 
+<line>
+<data>•\ufffc•\u30e3\u000c<100>\u1b39\u300a\u002f\u203a\u200b•\ufffc•\uaf64•\udcfb•</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>
+
+########################################################################################
+#
+#
+#       E x t e n d e d    G r a p h e m e    C l u s t e r     T e s t s
+#
+#
+##########################################################################################
+#<xgc>
+
+# Plain Vanilla grapheme clusters
+#<data>•a•b•c•</data>
+#<data>•a\u0301\u0302• •b\u0303\u0304•</data>
+
+# Assorted Hindi combining marks
+#<data>•\u0904\u0903• •\u0937\u093E• •\u0904\u093F• •\u0937\u0940• •\u0937\u0949• •\u0937\u094A• •\u0937\u094B• •\u0937\u094C•</data>
+
+# Thai Clusters
+# $Prepend $Extend* $PrependBase $Extend*;
+#
+#<data>•\u0e40\u0e01•\u0e44\u0301\u0e23\u0302\u0303•\u0e40•\u0e40\u0e02•\u0e02• •</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
+#               Unicode 5.2 changed it again, there is no break following the '('
+<data>•AAA(AAA •</data> 
+
+#       Try some words from other scripts.
+#          Greek, Cyrillic, Hebrew, Arabic, Arabic, Georgian, Latin
+#      
+<data>•ΑΒΓ •БВГ •אבג֓ •ابت •١٢٣ •\u10A0\u10A1\u10A2 •ABC •</data>
+
+#
+#       ticket #4853:  unpaired surrogates should behave like AL
+#
+<data>•abc\ud801xyz•</data>
+
+#
+#     Regression tests for failures that originally came from the monkey test.
+#     Monkey test failure lines can, with slight reformatting, be copied into this section
+#     as test cases.  The error display from here is more informative.
+#
+<data>•\ufffc•\u30e3\u000c<100>\u1b39\u300a\u002f\u203a\u200b•\ufffc•\uaf64•\udcfb•</data>
+<data>•\u114d\u31f3•\ube44\u002d•\u0362\u24e2\u276e\u2014\u205f\ufe16•\uc877•\u0fd0\u000a<100>\u20a3•</data>
+<data>•\u080a\u215b\U0001d7d3\u002c•\u2025\U000e012e•\u02df\u118d\u0029\ua8d6\u0085<100>\u6cc4\u2024\u202f\ufffc•</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>
+
+#
+#  Trac ticket 5595 Test Case
+#     (Omitted from ICU4J because of old dictionary implementation.
+#
+# <data>•บท<000>ที่๑พายุ<000>ไซโคลน<000>โด<000>โรธี<000>อาศัย<000>อยู่<000>ท่ามกลาง<000>\
+# ทุ่งใหญ่<000>ใน<000>แคนซัส<000>กับ<000>ลุง<000>เฮ<000>นรี<000>ชาวไร่<000>และ<000>ป้า<000>เอ็ม<000>\
+# ภรรยา<000>ชาวไร่<000>บ้าน<000>ของ<000>พวก<000>เขา<000>หลัง<000>เล็ก<000>เพราะ<000>ไม้<000>\
+# สร้าง<000>บ้าน<000>ต้อง<000>ขน<000>มา<000>ด้วย<000>เกวียน<000>เป็น<000>ระยะ<000>ทาง<000>หลาย<000>\
+# ไมล์<000></data>
+
+
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/search/package.html b/main/tests/core/src/com/ibm/icu/dev/test/search/package.html
new file mode 100644
index 0000000..522397a
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/CalendarTests.java b/main/tests/core/src/com/ibm/icu/dev/test/serializable/CalendarTests.java
new file mode 100644
index 0000000..de7406f
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/CompatibilityTest.java b/main/tests/core/src/com/ibm/icu/dev/test/serializable/CompatibilityTest.java
new file mode 100644
index 0000000..88c6927
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/CompatibilityTest.java
@@ -0,0 +1,274 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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"},
+        {"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"},
+        {"ICU_4.2.1",   "com.ibm.icu.text.CurrencyPluralInfo.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/main/tests/core/src/com/ibm/icu/dev/test/serializable/CoverageTest.java b/main/tests/core/src/com/ibm/icu/dev/test/serializable/CoverageTest.java
new file mode 100644
index 0000000..2d1ce00
--- /dev/null
+++ b/main/tests/core/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 (!c.isEnum() && 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/main/tests/core/src/com/ibm/icu/dev/test/serializable/ExceptionTests.java b/main/tests/core/src/com/ibm/icu/dev/test/serializable/ExceptionTests.java
new file mode 100644
index 0000000..fbba382
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/ExceptionTests.java
@@ -0,0 +1,157 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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.IllegalIcuArgumentException;
+import com.ibm.icu.impl.InvalidFormatException;
+import com.ibm.icu.impl.locale.LocaleSyntaxException;
+import com.ibm.icu.text.ArabicShapingException;
+import com.ibm.icu.text.StringPrepParseException;
+import com.ibm.icu.util.IllformedLocaleException;
+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;
+        }
+    }
+
+    static class IllformedLocaleExceptionHandler extends ExceptionHandler
+    {
+        public Object[] getTestObjects()
+        {
+            IllformedLocaleException[] exceptions = new IllformedLocaleException[2];
+            exceptions[0] = new IllformedLocaleException("msg1");
+            exceptions[1] = new IllformedLocaleException("msg2", 5);
+            return exceptions;
+        }
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            IllformedLocaleException ifeA = (IllformedLocaleException) a;
+            IllformedLocaleException ifeB = (IllformedLocaleException) b;
+            if (ifeA.getErrorIndex() != ifeB.getErrorIndex()) {
+                return false;
+            }
+            return super.hasSameBehavior(a, b);
+        }
+    }
+
+    static class LocaleSyntaxExceptionHandler extends ExceptionHandler
+    {
+        public Object[] getTestObjects()
+        {
+            LocaleSyntaxException[] exceptions = new LocaleSyntaxException[2];
+            exceptions[0] = new LocaleSyntaxException("msg1");
+            exceptions[1] = new LocaleSyntaxException("msg2", 5);
+            return exceptions;
+        }
+        public boolean hasSameBehavior(Object a, Object b)
+        {
+            LocaleSyntaxException ifeA = (LocaleSyntaxException) a;
+            LocaleSyntaxException ifeB = (LocaleSyntaxException) b;
+            if (ifeA.getErrorIndex() != ifeB.getErrorIndex()) {
+                return false;
+            }
+            return super.hasSameBehavior(a, b);
+        }
+    }
+
+    static class IllegalIcuArgumentExceptionHandler extends ExceptionHandler
+    {
+        public Object[] getTestObjects()
+        {
+            IllegalIcuArgumentException[] exceptions = {
+                new IllegalIcuArgumentException("Bad argument FOO")
+            };
+            return exceptions;
+        }
+    }
+
+    public static void main(String[] args)
+    {
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/FormatTests.java b/main/tests/core/src/com/ibm/icu/dev/test/serializable/FormatTests.java
new file mode 100644
index 0000000..fbc3449
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/FormatTests.java
@@ -0,0 +1,2162 @@
+/*
+ *******************************************************************************
+ * 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.CurrencyPluralInfo;
+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.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 (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.
+            }
+            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(), new CurrencyPluralInfo(new ULocale("en_US")),
+                CurrencyPluralInfo.getInstance(), CurrencyPluralInfo.getInstance(new Locale("en_US")),
+                CurrencyPluralInfo.getInstance(new ULocale("en_US"))
+            };
+            for(int i=0; i<currencyPluralInfo.length; i++){
+                currencyPluralInfo[i].setPluralRules("one: n is 1; few: n in 2..4");
+                currencyPluralInfo[i].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);
+        }
+    }
+
+    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);
+        }
+    }
+
+    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);
+        }
+        
+    }
+
+    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);
+        }
+    }
+
+    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;
+        }
+    }
+
+    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);
+        }
+    }
+
+    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));
+        }
+    }
+
+    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());
+        }
+    }
+
+    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,'0');
+            }
+            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) {
+            PluralFormat pfa = (PluralFormat)a;
+            PluralFormat pfb = (PluralFormat)b;
+            boolean isSame = true;
+            for (int i = 0; i < 10; i++) {
+                String texta = pfa.format(i);
+                String textb = pfb.format(i);
+                if (!texta.equals(textb)) {
+                    isSame = false;
+                    break;
+                }
+            }
+            return isSame;
+        }
+    }
+
+    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/main/tests/core/src/com/ibm/icu/dev/test/serializable/SerializableTest.java b/main/tests/core/src/com/ibm/icu/dev/test/serializable/SerializableTest.java
new file mode 100644
index 0000000..15f1d92
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/SerializableTest.java
@@ -0,0 +1,723 @@
+/*
+ *******************************************************************************
+ * 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 (!(TimeZone.getCanonicalID(zone_a.getID()).equals(TimeZone.getCanonicalID(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());
+
+        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());
+
+        map.put("com.ibm.icu.impl.duration.BasicDurationFormat", new FormatTests.BasicDurationFormatHandler());
+        map.put("com.ibm.icu.impl.RelativeDateFormat", new FormatTests.RelativeDateFormatHandler());
+        map.put("com.ibm.icu.util.IllformedLocaleException", new ExceptionTests.IllformedLocaleExceptionHandler());
+        map.put("com.ibm.icu.impl.locale.LocaleSyntaxException", new ExceptionTests.LocaleSyntaxExceptionHandler());
+        map.put("com.ibm.icu.impl.IllegalIcuArgumentException", new ExceptionTests.IllegalIcuArgumentExceptionHandler());
+    }
+    
+    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/main/tests/core/src/com/ibm/icu/dev/test/serializable/SerializableWriter.java b/main/tests/core/src/com/ibm/icu/dev/test/serializable/SerializableWriter.java
new file mode 100644
index 0000000..e9602ee
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.OlsonTimeZone.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.impl.TimeZoneAdapter.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.BigDecimal.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.math.MathContext.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ArabicShapingException.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.ChineseDateFormatSymbols.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DateFormatSymbols.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.DecimalFormatSymbols.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.MessageFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.NumberFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.RuleBasedNumberFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.SimpleDateFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.text.StringPrepParseException.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.BuddhistCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Calendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ChineseCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.CopticCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.Currency.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.EthiopicCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.GregorianCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.HebrewCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.IslamicCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.JapaneseCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.SimpleTimeZone.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.TimeZone.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.ULocale.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.6/com.ibm.icu.util.UResourceTypeMismatchException.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.DateNumberFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.InvalidFormatException.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.OlsonTimeZone.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.RelativeDateFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.TimeZoneAdapter.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.BigDecimal.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.math.MathContext.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ArabicShapingException.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat$Field.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat$Field.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DateFormatSymbols.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.DecimalFormatSymbols.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat$Field.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.MessageFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat$Field.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.NumberFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.PluralRules.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.RuleBasedNumberFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.SimpleDateFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.text.StringPrepParseException.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.AnnualTimeZoneRule.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.BuddhistCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Calendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ChineseCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.CopticCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.Currency.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.DateTimeRule.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.EthiopicCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.GregorianCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.HebrewCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IndianCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.InitialTimeZoneRule.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.IslamicCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.JapaneseCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.RuleBasedTimeZone.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.SimpleTimeZone.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TaiwanCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.TimeZone.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.ULocale.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.UResourceTypeMismatchException.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_3.8.1/com.ibm.icu.util.VTimeZone.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.DateNumberFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.InvalidFormatException.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.JavaTimeZone.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.OlsonTimeZone.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.RelativeDateFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.TimeZoneAdapter.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.impl.duration.BasicDurationFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.BigDecimal.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.math.MathContext.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ArabicShapingException.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat$Field.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.ChineseDateFormatSymbols.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat$Field.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateFormatSymbols.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DateIntervalInfo.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.DecimalFormatSymbols.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat$Field.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.MessageFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat$Field.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.NumberFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.PluralRules.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.RuleBasedNumberFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.SimpleDateFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.StringPrepParseException.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.text.TimeUnitFormat.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.AnnualTimeZoneRule.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.BuddhistCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Calendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ChineseCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.CopticCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.Currency.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateInterval.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.DateTimeRule.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.EthiopicCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.GregorianCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.HebrewCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IndianCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.InitialTimeZoneRule.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.IslamicCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.JapaneseCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.RuleBasedTimeZone.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.SimpleTimeZone.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TaiwanCalendar.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeArrayTimeZoneRule.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.TimeZone.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.ULocale.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.UResourceTypeMismatchException.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.0/com.ibm.icu.util.VTimeZone.dat b/main/tests/core/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/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.DateNumberFormat.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.DateNumberFormat.dat
new file mode 100644
index 0000000..371c631
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.IllegalIcuArgumentException.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.IllegalIcuArgumentException.dat
new file mode 100644
index 0000000..51340f9
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.IllegalIcuArgumentException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8f3cc538b05b4dd674964d3cb4db46595d8325d3d5ded94052436cf192da0bec
+size 1596
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.InvalidFormatException.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.InvalidFormatException.dat
new file mode 100644
index 0000000..3c94bfc
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.InvalidFormatException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b989195d3d09412ddb84c750fa380edbe775a8ccea183c8d4f8cc9a11aac2d80
+size 22099
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.JavaTimeZone.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.JavaTimeZone.dat
new file mode 100644
index 0000000..940595f
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.JavaTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9cce91b93af355902523e3c7eaaf22a385c59448dcf26da9a328f24b61327ac1
+size 2930
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.OlsonTimeZone.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.OlsonTimeZone.dat
new file mode 100644
index 0000000..a0062b0
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.OlsonTimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7dc5c76d6c2bf7fdca52c5e2711e1fe1457df6b7d591ebcfb64f8d6caa93e77f
+size 13745
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.RelativeDateFormat.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.RelativeDateFormat.dat
new file mode 100644
index 0000000..0111eb6
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.RelativeDateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:29ca78c0142c7a5bf5bc7762d1fce507cebc83f9a7f293582f41c14e7b206ee1
+size 10098
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.TimeZoneAdapter.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.TimeZoneAdapter.dat
new file mode 100644
index 0000000..0ff7bda
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.TimeZoneAdapter.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1884aa9b458eb887c0735efb55d6ceb7398af99fd984125dad33031cc7525cb0
+size 14178
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.duration.BasicDurationFormat.dat
new file mode 100644
index 0000000..236f236
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.locale.LocaleSyntaxException.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.locale.LocaleSyntaxException.dat
new file mode 100644
index 0000000..902e94c
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.impl.locale.LocaleSyntaxException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9068dee30bf85bbbe86f9e7b55a70bf5b2b75929bc627a3d44d7ae72cb34f36d
+size 2703
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.math.BigDecimal.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.math.BigDecimal.dat
new file mode 100644
index 0000000..f7fdd56
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.math.MathContext.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.math.MathContext.dat
new file mode 100644
index 0000000..32df3de
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.ArabicShapingException.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.ArabicShapingException.dat
new file mode 100644
index 0000000..79154f6
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.ArabicShapingException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:585bf697107c37b039107f6a25d01cb8f96d066d148f7c57fa63372e145247f9
+size 22099
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.ChineseDateFormat$Field.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.ChineseDateFormat$Field.dat
new file mode 100644
index 0000000..80067c8
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.ChineseDateFormat.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.ChineseDateFormat.dat
new file mode 100644
index 0000000..1649fa4
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.ChineseDateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:46f4dbed9541913f7927cdd730620a458a3f94effcdd6c4cc5cff1897bc3f9f0
+size 110524
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat
new file mode 100644
index 0000000..dacf45f
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.ChineseDateFormatSymbols.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:89f9bcac6918597ce77f7efa2ffb7500d62c1775a6bdb1b980d3db76891bb442
+size 22225
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.CurrencyPluralInfo.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.CurrencyPluralInfo.dat
new file mode 100644
index 0000000..f926ecd
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.CurrencyPluralInfo.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fd28f1a4671cb996c3f4da329098a6f744465adca060c37a76ceb087ace178b7
+size 1313
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateFormat$Field.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateFormat$Field.dat
new file mode 100644
index 0000000..47c1ebf
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateFormat.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateFormat.dat
new file mode 100644
index 0000000..c22adc3
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:397a8d03ab91562ac83ada381692589fb3d7c297bdf6041eb6028bc54d7fdcc6
+size 44301
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateFormatSymbols.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateFormatSymbols.dat
new file mode 100644
index 0000000..46cdd1f
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateFormatSymbols.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bc175a5f1c5d5013029aea73ee401df9bb61386393308ebe6396f25ab2b9f4bc
+size 22428
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateIntervalFormat.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateIntervalFormat.dat
new file mode 100644
index 0000000..498fc4f
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateIntervalFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e7a12374a75e7979c82b855df87b02ac8ebfce378d9d84db46b973540a435588
+size 9123
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateIntervalInfo$PatternInfo.dat
new file mode 100644
index 0000000..e660cb3
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateIntervalInfo.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DateIntervalInfo.dat
new file mode 100644
index 0000000..9c23f8a
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DecimalFormat.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DecimalFormat.dat
new file mode 100644
index 0000000..e390d09
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DecimalFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f003ecc25cfe09b044851417da4426da92a1eaed4fff43d77c2d6efd9fb8e00d
+size 9291
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DecimalFormatSymbols.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DecimalFormatSymbols.dat
new file mode 100644
index 0000000..a99c900
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.DecimalFormatSymbols.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7d4ade382f0c927604dc8e00148c9af5cdd202db3a90769a5ea1d164bb6e74aa
+size 4343
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.MessageFormat$Field.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.MessageFormat$Field.dat
new file mode 100644
index 0000000..052ec8cc
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.MessageFormat.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.MessageFormat.dat
new file mode 100644
index 0000000..6c00c11
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.NumberFormat$Field.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.NumberFormat$Field.dat
new file mode 100644
index 0000000..f430468
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.NumberFormat.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.NumberFormat.dat
new file mode 100644
index 0000000..6030d6b
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.NumberFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1810faef283bae05e1dcecd323e885e63164324259c710dfdb59f60cc1a9bab2
+size 3658
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.PluralFormat.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.PluralFormat.dat
new file mode 100644
index 0000000..6042974
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.PluralFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:440671f59de416d432612c8e82ecbe7ff22f639769a6969a5742dc347b93961d
+size 3863
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.PluralRules.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.PluralRules.dat
new file mode 100644
index 0000000..e72cad2
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.PluralRules.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:72ae8ce5b8a737cb8f9d3b3ae0584c671bdd60496050effc715dccb501f1ab2c
+size 2980
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.RuleBasedNumberFormat.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.RuleBasedNumberFormat.dat
new file mode 100644
index 0000000..77c67bc
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.RuleBasedNumberFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1c0ca7d198692affbd50a7a5e6dd0dec67c0536fa4cbe272a9ae831772a37e3d
+size 51177
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.SimpleDateFormat.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.SimpleDateFormat.dat
new file mode 100644
index 0000000..116d1c0
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.SimpleDateFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1e5e57c05490250b629935509817f0d4862c5dba2de2555b47312c87e487c8a5
+size 119614
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.StringPrepParseException.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.StringPrepParseException.dat
new file mode 100644
index 0000000..95e25c2
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.StringPrepParseException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ef0e341acc89fd486334a7cca32f03bf9a9d7920f6a31a371e7fcc05b8a52bc2
+size 26674
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.TimeUnitFormat.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.TimeUnitFormat.dat
new file mode 100644
index 0000000..78406e7
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.text.TimeUnitFormat.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:97714801f1d025f4bf03873f2dd3e2b9dabf2c8d84853ac573f7476be79f0253
+size 420
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.AnnualTimeZoneRule.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.AnnualTimeZoneRule.dat
new file mode 100644
index 0000000..74ffe4b
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.BuddhistCalendar.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.BuddhistCalendar.dat
new file mode 100644
index 0000000..7c675c3
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.BuddhistCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a19adde42d636becc2bd7e0f72d8feb1de88cec30cd5a7b347dd58f050ef9430
+size 2402
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.Calendar.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.Calendar.dat
new file mode 100644
index 0000000..5c031c7
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.Calendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:72e72b4c5dcb1893922dccc34494e1f5a363d5d467bd570228aed80a5022a5d4
+size 3316
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.ChineseCalendar.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.ChineseCalendar.dat
new file mode 100644
index 0000000..47ac72a
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.ChineseCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a081a0354914617c2f140a41f332c68ebacb978facc4e2c037e966bbe0177fca
+size 2253
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.CopticCalendar.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.CopticCalendar.dat
new file mode 100644
index 0000000..4186263
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.CopticCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ac93567e797ed01693b5789659fa9b459fa11fc95e20046be33181ea839a0c08
+size 2842
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.Currency.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.Currency.dat
new file mode 100644
index 0000000..eacaa8c
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.DateInterval.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.DateInterval.dat
new file mode 100644
index 0000000..dde6bea
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.DateTimeRule.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.DateTimeRule.dat
new file mode 100644
index 0000000..7f31f10
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.EthiopicCalendar.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.EthiopicCalendar.dat
new file mode 100644
index 0000000..cab2dc0
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.EthiopicCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4465a2a668362fc2a5ebf49fc72e7101bf26a104979b329587a1585b23527b39
+size 2308
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.GregorianCalendar.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.GregorianCalendar.dat
new file mode 100644
index 0000000..0cd6c1a
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.GregorianCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2ebfb2772cb757d238defe686e3f65470d3584c734e7850364742107fdbba20d
+size 3325
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.HebrewCalendar.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.HebrewCalendar.dat
new file mode 100644
index 0000000..98cc8d5
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.HebrewCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b86fe7ae0496f9f1e272e332ca577cc178d29b677911dcfa1d4319a77f283603
+size 2885
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.IllformedLocaleException.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.IllformedLocaleException.dat
new file mode 100644
index 0000000..9ec357e
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.IllformedLocaleException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:14b957b58ee4e929129ff7d8ac136e498f5a0c863d0e8b1b8b8a874184f51b67
+size 2639
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.IndianCalendar.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.IndianCalendar.dat
new file mode 100644
index 0000000..7bfaf71
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.IndianCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:663973206629fa5297f5ca9e5da942b848b488812674c158c760a99aea45e235
+size 2194
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.InitialTimeZoneRule.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.InitialTimeZoneRule.dat
new file mode 100644
index 0000000..faea30f
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.IslamicCalendar.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.IslamicCalendar.dat
new file mode 100644
index 0000000..cfe269e
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.IslamicCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c7e79bfd1665e4af5bb5d4cea8c938a493baedc51796c42295e927565ba92b29
+size 3121
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.JapaneseCalendar.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.JapaneseCalendar.dat
new file mode 100644
index 0000000..04d75e4
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.JapaneseCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:93340c4add91fd4669e0c9ae19b3bcc08247435a2e4d1b55a800fa045cfa5eda
+size 2440
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.RuleBasedTimeZone.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.RuleBasedTimeZone.dat
new file mode 100644
index 0000000..9537c28
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.SimpleTimeZone.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.SimpleTimeZone.dat
new file mode 100644
index 0000000..faa1a48
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.TaiwanCalendar.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.TaiwanCalendar.dat
new file mode 100644
index 0000000..94c5952
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.TaiwanCalendar.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b056373bd75a2d337ba186596f611f1d23d88d7aad2355f915d746e21852b7f9
+size 2487
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.TimeArrayTimeZoneRule.dat
new file mode 100644
index 0000000..20c8438
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.TimeZone.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.TimeZone.dat
new file mode 100644
index 0000000..d6ce0f7
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.TimeZone.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3e758d2a00e1d4fe35dc26f99f6750ccd049378b0ef33b3a2de8659061b6bf9e
+size 1281
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.ULocale.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.ULocale.dat
new file mode 100644
index 0000000..7bbeb2a
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.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/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.UResourceTypeMismatchException.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.UResourceTypeMismatchException.dat
new file mode 100644
index 0000000..0324119
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.UResourceTypeMismatchException.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:74387de45507ad6f6cce56efdf2e090e14d513fd9969605263c9c8115864a5ec
+size 22324
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.VTimeZone.dat b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.1/com.ibm.icu.util.VTimeZone.dat
new file mode 100644
index 0000000..f6f93f9
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_4.2.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/main/tests/core/src/com/ibm/icu/dev/test/shaping/ArabicShapingRegTest.java b/main/tests/core/src/com/ibm/icu/dev/test/shaping/ArabicShapingRegTest.java
new file mode 100644
index 0000000..2f904f2
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/shaping/ArabicShapingRegTest.java
@@ -0,0 +1,630 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2009, 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);
+        }
+    }
+    
+    /* Tests the method
+     *      public int shape(char[] source, int sourceStart, int sourceLength,
+     *      char[] dest, int destStart, int destSize) throws ArabicShapingException)
+     */
+    public void TestShape(){
+        // Tests when
+        //      if (sourceStart < 0 || sourceLength < 0 || sourceStart + sourceLength > source.length)
+        // Is true
+        ArabicShaping as = new ArabicShaping(0);
+        char[] source = {'d','u','m','m','y'};
+        char[] dest = {'d','u','m','m','y'};
+        int[] negNum = {-1,-2,-5,-10,-100};
+        
+        
+        for(int i=0; i<negNum.length; i++){
+            try{
+                // Checks when "sourceStart < 0"
+                as.shape(source, negNum[i], 0, dest, 0, 0);
+                errln("ArabicShaping.shape(char[],int,int,char[],int,int) was " +
+                        "suppose to return an exception when 'sourceStart < 0'.");
+            } catch(Exception e){}
+            
+            try{
+                // Checks when "sourceLength < 0"
+                as.shape(source, 0, negNum[i], dest, 0, 0);
+                errln("ArabicShaping.shape(char[],int,int,char[],int,int) was " +
+                        "suppose to return an exception when 'sourceLength < 0'.");
+            } catch(Exception e){}
+        }
+        
+        // Checks when "sourceStart + sourceLength > source.length"
+        try{
+            as.shape(source, 3, 3, dest, 0, 0);
+            errln("ArabicShaping.shape(char[],int,int,char[],int,int) was " +
+                    "suppose to return an exception when 'sourceStart + sourceLength > source.length'.");
+        } catch(Exception e){}
+        try{
+            as.shape(source, 2, 4, dest, 0, 0);
+            errln("ArabicShaping.shape(char[],int,int,char[],int,int) was " +
+                    "suppose to return an exception when 'sourceStart + sourceLength > source.length'.");
+        } catch(Exception e){}
+        try{
+            as.shape(source, 1, 5, dest, 0, 0);
+            errln("ArabicShaping.shape(char[],int,int,char[],int,int) was " +
+                    "suppose to return an exception when 'sourceStart + sourceLength > source.length'.");
+        } catch(Exception e){}
+        try{
+            as.shape(source, 0, 6, dest, 0, 0);
+            errln("ArabicShaping.shape(char[],int,int,char[],int,int) was " +
+                    "suppose to return an exception when 'sourceStart + sourceLength > source.length'.");
+        } catch(Exception e){}
+        
+        // Checks when "if (dest == null && destSize != 0)" is true
+        try{
+            as.shape(source, 2, 2, null, 0, 1);
+            errln("ArabicShaping.shape(char[],int,int,char[],int,int) was " +
+                    "suppose to return an exception when 'dest == null && destSize != 0'.");
+        } catch(Exception e){}
+        
+        // Checks when
+        // if ((destSize != 0) && (destStart < 0 || destSize < 0 || destStart + destSize > dest.length))
+        for(int i=0; i<negNum.length; i++){
+            try{
+                as.shape(source, 2, 2, dest, negNum[i], 1);
+                errln("ArabicShaping.shape(char[],int,int,char[],int,int) was " +
+                        "suppose to return an exception when " +
+                        "(destSize != 0) && (destStart < 0 || destSize < 0 || destStart + destSize > dest.length).");
+            } catch(Exception e){}
+            
+            try{
+                as.shape(source, 2, 2, dest, 0, negNum[i]);
+                errln("ArabicShaping.shape(char[],int,int,char[],int,int) was " +
+                        "suppose to return an exception when " +
+                        "(destSize != 0) && (destStart < 0 || destSize < 0 || destStart + destSize > dest.length).");
+            } catch(Exception e){}
+        }
+        
+        // Checks when "destStart + destSize > dest.length"
+        try{
+            as.shape(source, 2, 2, dest, 3, 3);
+            errln("ArabicShaping.shape(char[],int,int,char[],int,int) was " +
+                    "suppose to return an exception when " +
+                    "(destSize != 0) && (destStart < 0 || destSize < 0 || destStart + destSize > dest.length).");
+        } catch(Exception e){}
+        try{
+            as.shape(source, 2, 2, dest, 2, 4);
+            errln("ArabicShaping.shape(char[],int,int,char[],int,int) was " +
+                    "suppose to return an exception when " +
+                    "(destSize != 0) && (destStart < 0 || destSize < 0 || destStart + destSize > dest.length).");
+        } catch(Exception e){}
+        try{
+            as.shape(source, 2, 2, dest, 1, 5);
+            errln("ArabicShaping.shape(char[],int,int,char[],int,int) was " +
+                    "suppose to return an exception when " +
+                    "(destSize != 0) && (destStart < 0 || destSize < 0 || destStart + destSize > dest.length).");
+        } catch(Exception e){}
+        try{
+            as.shape(source, 2, 2, dest, 0, 6);
+            errln("ArabicShaping.shape(char[],int,int,char[],int,int) was " +
+                    "suppose to return an exception when " +
+                    "(destSize != 0) && (destStart < 0 || destSize < 0 || destStart + destSize > dest.length).");
+        } catch(Exception e){}
+        
+        // Tests when "throw new IllegalArgumentException("Wrong Tashkeel argument")"
+        int[] invalid_Tashkeel = {-1000, -500, -100}; 
+        for(int i=0; i < invalid_Tashkeel.length; i++){
+            ArabicShaping arabicShape = new ArabicShaping(invalid_Tashkeel[i]);
+            try {
+                arabicShape.shape(source,0,0,dest,0,1);
+                errln("ArabicShaping.shape(char[],int,int,char[],int,int) was " +
+                        "suppose to return an exception for 'Wrong Tashkeel argument' for " +
+                        "an option value of " + invalid_Tashkeel[i]);
+            } catch (Exception e) {}
+        }
+    }
+    
+    /* Tests the method
+     *      public static int flipArray(char [] dest, int start, int e, int w)
+     */
+    public void TestFlipArray(){
+        // Tests when "if (w > start)" is false
+        char[] dest = {'d','e','s','t'};
+        if(ArabicShaping.flipArray(dest,2,10,1) != 10){
+            errln("ArabicShaping.flipArray(char[],int,int,int) was suppose to return 10.");
+        }
+    }
+}
+
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/shaping/ArabicShapingTest.java b/main/tests/core/src/com/ibm/icu/dev/test/shaping/ArabicShapingTest.java
new file mode 100644
index 0000000..0134cb1
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/shaping/ArabicShapingTest.java
@@ -0,0 +1,286 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2001-2009, 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/main/tests/core/src/com/ibm/icu/dev/test/stringprep/IDNAConformanceTest.java b/main/tests/core/src/com/ibm/icu/dev/test/stringprep/IDNAConformanceTest.java
new file mode 100644
index 0000000..65acd89
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/stringprep/IDNAReference.java b/main/tests/core/src/com/ibm/icu/dev/test/stringprep/IDNAReference.java
new file mode 100644
index 0000000..94f3aea
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/stringprep/NFS4StringPrep.java b/main/tests/core/src/com/ibm/icu/dev/test/stringprep/NFS4StringPrep.java
new file mode 100644
index 0000000..4d1a0a2
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/stringprep/NamePrepTransform.java b/main/tests/core/src/com/ibm/icu/dev/test/stringprep/NamePrepTransform.java
new file mode 100644
index 0000000..a538c0e
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/stringprep/NamePrepTransform.java
@@ -0,0 +1,170 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2009, 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;
+// disable tests that have dependency on Transliterator for now
+// 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");
+        // disable
+        // 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);
+        // disable test
+        // String caseMapOut = transform.mapTransform.transliterate(src);    
+        String caseMapOut = 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/main/tests/core/src/com/ibm/icu/dev/test/stringprep/PunycodeReference.java b/main/tests/core/src/com/ibm/icu/dev/test/stringprep/PunycodeReference.java
new file mode 100644
index 0000000..c94c42e
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestAll.java b/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestAll.java
new file mode 100644
index 0000000..d8a5074
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestAll.java
@@ -0,0 +1,38 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2009, 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[] {
+                // disable these tests while translit is not available
+                // "TestIDNA",
+                // "TestStringPrep",
+                // "TestIDNARef",
+                "IDNAConformanceTest",
+                "TestStringPrepProfiles",
+            },
+            "StringPrep and IDNA test"
+            );
+    }
+
+    public static final String CLASS_TARGET_NAME = "StringPrep";
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestData.java b/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestData.java
new file mode 100644
index 0000000..d1aa4e8
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestIDNA.java b/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestIDNA.java
new file mode 100644
index 0000000..367d143
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestIDNA.java
@@ -0,0 +1,1054 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.stringprep;
+
+import java.util.Random;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.IDNA;
+import com.ibm.icu.text.StringPrep;
+import com.ibm.icu.text.StringPrepParseException;
+import com.ibm.icu.text.UCharacterIterator;
+import com.ibm.icu.text.UTF16;
+
+/**
+ * @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{
+        StringPrep namePrep = StringPrep.getInstance(StringPrep.RFC3491_NAMEPREP);
+        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");
+            }
+        }
+    }
+    
+    /* Tests the method public static StringBuffer convertToASCII(String src, int options) */
+    public void TestConvertToASCII() {
+        try {
+            if (!IDNA.convertToASCII("dummy", 0).toString().equals("dummy")) {
+                errln("IDNA.convertToASCII(String,int) was suppose to return the same string passed.");
+            }
+        } catch (Exception e) {
+            errln("IDNA.convertToASCII(String,int) was not suppose to return an exception.");
+        }
+    }
+
+    /*
+     * Tests the method public static StringBuffer convertIDNToASCII(UCharacterIterator src, int options), method public
+     * static StringBuffer public static StringBuffer convertIDNToASCII(StringBuffer src, int options), public static
+     * StringBuffer convertIDNToASCII(UCharacterIterator src, int options)
+     */
+    public void TestConvertIDNToASCII() {
+        try {
+            UCharacterIterator uci = UCharacterIterator.getInstance("dummy");
+            if (!IDNA.convertIDNToASCII(uci, 0).toString().equals("dummy")) {
+                errln("IDNA.convertIDNToASCII(UCharacterIterator, int) was suppose to "
+                        + "return the same string passed.");
+            }
+            if (!IDNA.convertIDNToASCII(new StringBuffer("dummy"), 0).toString().equals("dummy")) {
+                errln("IDNA.convertIDNToASCII(StringBuffer, int) was suppose to " + "return the same string passed.");
+            }
+        } catch (Exception e) {
+            errln("IDNA.convertIDNToASCII was not suppose to return an exception.");
+        }
+    }
+
+    /*
+     * Tests the method public static StringBuffer convertToUnicode(String src, int options), public static StringBuffer
+     * convertToUnicode(StringBuffer src, int options)
+     */
+    public void TestConvertToUnicode() {
+        try {
+            if (!IDNA.convertToUnicode("dummy", 0).toString().equals("dummy")) {
+                errln("IDNA.convertToUnicode(String, int) was suppose to " + "return the same string passed.");
+            }
+            if (!IDNA.convertToUnicode(new StringBuffer("dummy"), 0).toString().equals("dummy")) {
+                errln("IDNA.convertToUnicode(StringBuffer, int) was suppose to " + "return the same string passed.");
+            }
+        } catch (Exception e) {
+            errln("IDNA.convertToUnicode was not suppose to return an exception.");
+        }
+    }
+
+    /* Tests the method public static StringBuffer convertIDNToUnicode(UCharacterIterator src, int options) */
+    public void TestConvertIDNToUnicode() {
+        try {
+            UCharacterIterator uci = UCharacterIterator.getInstance("dummy");
+            if (!IDNA.convertIDNToUnicode(uci, 0).toString().equals("dummy")) {
+                errln("IDNA.convertIDNToUnicode(UCharacterIterator, int) was suppose to "
+                        + "return the same string passed.");
+            }
+            if (!IDNA.convertIDNToUnicode(new StringBuffer("dummy"), 0).toString().equals("dummy")) {
+                errln("IDNA.convertIDNToUnicode(StringBuffer, int) was suppose to " + "return the same string passed.");
+            }
+        } catch (Exception e) {
+            errln("IDNA.convertIDNToUnicode was not suppose to return an exception.");
+        }
+    }
+
+    /* Tests the method public static int compare */
+    public void TestIDNACompare() {
+        // Testing the method public static int compare(String s1, String s2, int options)
+        try {
+            IDNA.compare((String) null, (String) null, 0);
+            errln("IDNA.compare((String)null,(String)null) was suppose to return an exception.");
+        } catch (Exception e) {
+        }
+
+        try {
+            IDNA.compare((String) null, "dummy", 0);
+            errln("IDNA.compare((String)null,'dummy') was suppose to return an exception.");
+        } catch (Exception e) {
+        }
+
+        try {
+            IDNA.compare("dummy", (String) null, 0);
+            errln("IDNA.compare('dummy',(String)null) was suppose to return an exception.");
+        } catch (Exception e) {
+        }
+
+        try {
+            if (IDNA.compare("dummy", "dummy", 0) != 0) {
+                errln("IDNA.compare('dummy','dummy') was suppose to return a 0.");
+            }
+        } catch (Exception e) {
+            errln("IDNA.compare('dummy','dummy') was not suppose to return an exception.");
+        }
+
+        // Testing the method public static int compare(StringBuffer s1, StringBuffer s2, int options)
+        try {
+            IDNA.compare((StringBuffer) null, (StringBuffer) null, 0);
+            errln("IDNA.compare((StringBuffer)null,(StringBuffer)null) was suppose to return an exception.");
+        } catch (Exception e) {
+        }
+
+        try {
+            IDNA.compare((StringBuffer) null, new StringBuffer("dummy"), 0);
+            errln("IDNA.compare((StringBuffer)null,'dummy') was suppose to return an exception.");
+        } catch (Exception e) {
+        }
+
+        try {
+            IDNA.compare(new StringBuffer("dummy"), (StringBuffer) null, 0);
+            errln("IDNA.compare('dummy',(StringBuffer)null) was suppose to return an exception.");
+        } catch (Exception e) {
+        }
+
+        try {
+            if (IDNA.compare(new StringBuffer("dummy"), new StringBuffer("dummy"), 0) != 0) {
+                errln("IDNA.compare(new StringBuffer('dummy'),new StringBuffer('dummy')) was suppose to return a 0.");
+            }
+        } catch (Exception e) {
+            errln("IDNA.compare(new StringBuffer('dummy'),new StringBuffer('dummy')) was not suppose to return an exception.");
+        }
+
+        // Testing the method public static int compare(UCharacterIterator s1, UCharacterIterator s2, int options)
+        UCharacterIterator uci = UCharacterIterator.getInstance("dummy");
+        try {
+            IDNA.compare((UCharacterIterator) null, (UCharacterIterator) null, 0);
+            errln("IDNA.compare((UCharacterIterator)null,(UCharacterIterator)null) was suppose to return an exception.");
+        } catch (Exception e) {
+        }
+
+        try {
+            IDNA.compare((UCharacterIterator) null, uci, 0);
+            errln("IDNA.compare((UCharacterIterator)null,UCharacterIterator) was suppose to return an exception.");
+        } catch (Exception e) {
+        }
+
+        try {
+            IDNA.compare(uci, (UCharacterIterator) null, 0);
+            errln("IDNA.compare(UCharacterIterator,(UCharacterIterator)null) was suppose to return an exception.");
+        } catch (Exception e) {
+        }
+
+        try {
+            if (IDNA.compare(uci, uci, 0) != 0) {
+                errln("IDNA.compare(UCharacterIterator('dummy'),UCharacterIterator('dummy')) was suppose to return a 0.");
+            }
+        } catch (Exception e) {
+            errln("IDNA.compare(UCharacterIterator('dummy'),UCharacterIterator('dummy')) was not suppose to return an exception.");
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestIDNARef.java b/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestIDNARef.java
new file mode 100644
index 0000000..31f550e
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestInputDataStructure.java b/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestInputDataStructure.java
new file mode 100644
index 0000000..cb87eab
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestStringPrep.java b/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestStringPrep.java
new file mode 100644
index 0000000..dacbe04
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestStringPrep.java
@@ -0,0 +1,326 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.stringprep;
+
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.StringPrep;
+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)");
+        }
+    }
+    
+    /* Tests the method public static StringPrep getInstance(int profile) */
+    public void TestGetInstance(){
+        // Tests when "if (profile < 0 || profile > MAX_PROFILE)" is true
+        int[] neg_num_cases = {-100,-50,-10,-5,-2,-1};
+        for(int i=0; i<neg_num_cases.length; i++){
+            try{
+                StringPrep.getInstance(neg_num_cases[i]);
+                errln("StringPrep.getInstance(int) expected an exception for " +
+                        "an invalid parameter of " + neg_num_cases[i]);
+            } catch(Exception e){
+            }
+        }
+        
+        int[] max_profile_cases = {StringPrep.RFC4518_LDAP_CI+1, StringPrep.RFC4518_LDAP_CI+2, StringPrep.RFC4518_LDAP_CI+5, StringPrep.RFC4518_LDAP_CI+10};
+        for(int i=0; i<max_profile_cases.length; i++){
+            try{
+                StringPrep.getInstance(max_profile_cases[i]);
+                errln("StringPrep.getInstance(int) expected an exception for " +
+                        "an invalid parameter of " + max_profile_cases[i]);
+            } catch(Exception e){
+            }
+        }
+        
+        // Tests when "if (instance == null)", "if (stream != null)", "if (instance != null)", and "if (ref != null)" is true
+        int[] cases = {0, 1, StringPrep.RFC4518_LDAP_CI};
+        for(int i=0; i<cases.length; i++){
+            try{
+                StringPrep.getInstance(cases[i]);
+            } catch(Exception e){
+                errln("StringPrep.getInstance(int) did not expected an exception for " +
+                        "an valid parameter of " + cases[i]);
+            }
+        }
+    }
+    
+    /* Test the method public String prepare(String src, int options) */
+    public void TestPrepare() {
+        StringPrep sp = StringPrep.getInstance(0);
+        try {
+            if (!(sp.prepare("dummy", 0)).equals("dummy")) {
+                errln("StringPrep.prepare(String,int) was suppose to return " + "'dummy'");
+            }
+        } catch (Exception e) {
+            errln("StringPrep.prepare(String,int) was not suppose to return " + "an exception.");
+        }
+    }
+    
+    /*
+     * Tests the constructor public StringPrepParseException(String message, int error, String rules, int pos, int
+     * lineNumber)
+     */
+    public void TestStringPrepParseException() {
+        Locale locales[] = {Locale.US, Locale.FRENCH, Locale.SIMPLIFIED_CHINESE};
+        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, i);
+        }
+    }
+    
+    /* Tests the method public boolean equals(Object other) for StringPrepParseException */
+    public void TestStringPrepParseExceptionEquals(){
+        StringPrepParseException sppe = new StringPrepParseException("dummy",0,"dummy",0,0);
+        StringPrepParseException sppe_clone = new StringPrepParseException("dummy",0,"dummy",0,0);
+        StringPrepParseException sppe1 = new StringPrepParseException("dummy1",1,"dummy1",0,0);
+        
+        // Tests when "if(!(other instanceof StringPrepParseException))" is true
+        if(sppe.equals(0)){
+            errln("StringPrepParseException.equals(Object) is suppose to return false when " +
+                    "passing integer '0'");
+        }
+        if(sppe.equals(0.0)){
+            errln("StringPrepParseException.equals(Object) is suppose to return false when " +
+                    "passing float/double '0.0'");
+        }
+        if(sppe.equals("0")){
+            errln("StringPrepParseException.equals(Object) is suppose to return false when " +
+                    "passing string '0'");
+        }
+        
+        // Tests when "if(!(other instanceof StringPrepParseException))" is true
+        if(!sppe.equals(sppe)){
+            errln("StringPrepParseException.equals(Object) is suppose to return true when " +
+            "comparing to the same object");
+        }
+        if(!sppe.equals(sppe_clone)){
+            errln("StringPrepParseException.equals(Object) is suppose to return true when " +
+            "comparing to the same initiated object");
+        }
+        if(sppe.equals(sppe1)){
+            errln("StringPrepParseException.equals(Object) is suppose to return false when " +
+            "comparing to another object that isn't the same");
+        }
+    }
+    
+    /* Tests the method public int getError() */
+    public void TestGetError(){
+        for(int i=0; i < 5; i++){
+            StringPrepParseException sppe = new StringPrepParseException("dummy",i,"dummy",0,0);
+            if(sppe.getError() != i){
+                errln("StringPrepParseExcpetion.getError() was suppose to return " + i + " but got " + sppe.getError());
+            }
+        }
+    }
+    
+    /* Tests the private void setPreContext(char[] str, int pos) */
+    public void TestSetPreContext(){
+        String WordAtLeast16Characters = "abcdefghijklmnopqrstuvwxyz";
+        for(int i=0; i < 5; i++){
+            try{
+                @SuppressWarnings("unused")
+                StringPrepParseException sppe = new StringPrepParseException("dummy",i,WordAtLeast16Characters,0,0);
+                sppe = new StringPrepParseException(WordAtLeast16Characters,i,"dummy",0,0);
+            } catch(Exception e){
+                errln("StringPrepParseException.setPreContext was not suppose to return an exception");
+            }
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestStringPrepProfiles.java b/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestStringPrepProfiles.java
new file mode 100644
index 0000000..f28c965
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestStringPrepProfiles.java
@@ -0,0 +1,170 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, 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.StringPrep;
+import com.ibm.icu.text.StringPrepParseException;
+
+/**
+ * @author Michael Ow
+ *
+ */
+public class TestStringPrepProfiles extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new TestStringPrepProfiles().run(args);
+    }
+    
+    /*
+     * The format of the test cases should be the following:
+     * {
+     *     Profile name
+     *     src string1
+     *     expected result1
+     *     src string2
+     *     expected result2
+     *     ...
+     * } 
+     * 
+     * *Note: For expected failures add FAIL to beginning of the source string and for expected result use "FAIL".
+     */
+    private static String[][] testCases = {
+        {
+            "RFC4013_SASLPREP",
+            "user:\u00A0\u0AC6\u1680\u00ADpassword1",
+            "user: \u0AC6 password1"
+        },
+        {
+            "RFC4011_MIB",
+            "Policy\u034F\u200DBase\u0020d\u1806\u200C",
+            "PolicyBase d"
+        },
+        {
+            "RFC4505_TRACE",
+            "Anony\u0020\u00A0mous\u3000\u0B9D\u034F\u00AD",
+            "Anony\u0020\u00A0mous\u3000\u0B9D\u034F\u00AD"
+        },
+        {
+            "RFC4518_LDAP",
+            "Ldap\uFB01\u00ADTest\u0020\u00A0\u2062ing",
+            "LdapfiTest  ing"
+        },
+        {
+            "RFC4518_LDAP_CI",
+            "Ldap\uFB01\u00ADTest\u0020\u00A0\u2062ing12345",
+            "ldapfitest  ing12345"
+        },
+        {
+            "RFC3920_RESOURCEPREP",
+            "ServerXM\u2060\uFE00\uFE09PP s p ",
+            "ServerXMPP s p "
+        },
+        {
+            "RFC3920_NODEPREP",
+            "Server\u200DXMPPGreEK\u03D0",
+            "serverxmppgreek\u03B2"
+        },
+        {
+            "RFC3722_ISCSI",
+            "InternetSmallComputer\uFB01\u0032\u2075Interface",
+            "internetsmallcomputerfi25interface",
+            "FAILThisShouldFailBecauseOfThis\u002F",
+            "FAIL"
+        },
+        {
+            "RFC3530_NFS4_CS_PREP",
+            "\u00ADUser\u2060Name@ \u06DDDOMAIN.com",
+            "UserName@ \u06DDDOMAIN.com"
+        },
+        {
+            "RFC3530_NFS4_CS_PREP_CI",
+            "\u00ADUser\u2060Name@ \u06DDDOMAIN.com",
+            "username@ \u06DDdomain.com"
+        },
+        {
+            "RFC3530_NFS4_CIS_PREP",
+            "AA\u200C\u200D @@DomAin.org",
+            "aa @@domain.org"
+        },
+        {
+            "RFC3530_NFS4_MIXED_PREP_PREFIX",
+            "PrefixUser \u007F\uFB01End",
+            "PrefixUser \u007FfiEnd"
+        },
+        {
+            "RFC3530_NFS4_MIXED_PREP_SUFFIX",
+            "SuffixDomain \u007F\uFB01EnD",
+            "suffixdomain \u007Ffiend"
+        }
+    };
+    
+    private int getOptionFromProfileName(String profileName) {
+        if (profileName.equals("RFC4013_SASLPREP")) {
+            return StringPrep.RFC4013_SASLPREP;
+        } else if (profileName.equals("RFC4011_MIB")) {
+            return StringPrep.RFC4011_MIB;
+        } else if (profileName.equals("RFC4505_TRACE")) {
+            return StringPrep.RFC4505_TRACE;
+        } else if (profileName.equals("RFC4518_LDAP")) {
+            return StringPrep.RFC4518_LDAP;
+        } else if (profileName.equals("RFC4518_LDAP_CI")) {
+            return StringPrep.RFC4518_LDAP_CI;
+        } else if (profileName.equals("RFC3920_RESOURCEPREP")) {
+            return StringPrep.RFC3920_RESOURCEPREP;
+        } else if (profileName.equals("RFC3920_NODEPREP")) {
+            return StringPrep.RFC3920_NODEPREP;
+        } else if (profileName.equals("RFC3722_ISCSI")) {
+            return StringPrep.RFC3722_ISCSI;
+        } else if (profileName.equals("RFC3530_NFS4_CS_PREP")) {
+            return StringPrep.RFC3530_NFS4_CS_PREP;
+        } else if (profileName.equals("RFC3530_NFS4_CS_PREP_CI")) {
+            return StringPrep.RFC3530_NFS4_CS_PREP_CI;
+        } else if (profileName.equals("RFC3530_NFS4_CIS_PREP")) {
+            return StringPrep.RFC3530_NFS4_CIS_PREP;
+        } else if (profileName.equals("RFC3530_NFS4_MIXED_PREP_PREFIX")) {
+            return StringPrep.RFC3530_NFS4_MIXED_PREP_PREFIX;
+        } else if (profileName.equals("RFC3530_NFS4_MIXED_PREP_SUFFIX")) {
+            return StringPrep.RFC3530_NFS4_MIXED_PREP_SUFFIX;
+        } 
+        
+        // Should not happen.
+        return -1;
+    }
+    
+    public void TestProfiles() {
+        String profileName = null;
+        StringPrep sprep = null;
+        String result = null;
+        String src = null;
+        String expected = null;
+        
+        for (int i = 0; i < testCases.length; i++) {
+            for (int j = 0; j < testCases[i].length; j++) {
+                if (j == 0) {
+                    profileName = testCases[i][j];
+                    
+                    sprep = StringPrep.getInstance(getOptionFromProfileName(profileName));
+                } else {
+                    src = testCases[i][j];
+                    expected = testCases[i][++j];
+                    try {
+                        result = sprep.prepare(src, StringPrep.ALLOW_UNASSIGNED);
+                        if (src.startsWith("FAIL")) {
+                            errln("Failed: Expected error for Test[" + i +"] Profile: " + profileName);
+                        } else if (!result.equals(expected)) {
+                            errln("Failed: Test[" + i + "] Result string does not match expected string for StringPrep test for profile: " + profileName);
+                        }
+                    } catch (StringPrepParseException ex) {
+                        if (!src.startsWith("FAIL")) {
+                            errln("Failed: Test[" + i + "] StringPrep profile " + profileName + " got error: " + ex);
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/timescale/TestAll.java b/main/tests/core/src/com/ibm/icu/dev/test/timescale/TestAll.java
new file mode 100644
index 0000000..08ea6f2
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/timescale/TimeScaleAPITest.java b/main/tests/core/src/com/ibm/icu/dev/test/timescale/TimeScaleAPITest.java
new file mode 100644
index 0000000..52de3ef
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/timescale/TimeScaleDataTest.java b/main/tests/core/src/com/ibm/icu/dev/test/timescale/TimeScaleDataTest.java
new file mode 100644
index 0000000..46c595a
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/timescale/TimeScaleMonkeyTest.java b/main/tests/core/src/com/ibm/icu/dev/test/timescale/TimeScaleMonkeyTest.java
new file mode 100644
index 0000000..6c2915c
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/timezone/TestAll.java b/main/tests/core/src/com/ibm/icu/dev/test/timezone/TestAll.java
new file mode 100644
index 0000000..0545f0f
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneAliasTest.java b/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneAliasTest.java
new file mode 100644
index 0000000..f5913bc
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneAliasTest.java
@@ -0,0 +1,424 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+*/
+package com.ibm.icu.dev.test.timezone;
+
+import java.text.DateFormat;
+import java.text.NumberFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collection;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
+import com.ibm.icu.dev.test.TestFmwk;
+// remove dependency on this for now
+// 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
+     */
+    // remove dependency on bagformatter for now
+    static class CollectionJoiner {
+        private String separator;
+        CollectionJoiner(String separator) {
+            this.separator = separator;
+        }
+        String join(Collection c) {
+            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(", ");
+        private static final CollectionJoiner bf = new CollectionJoiner(", ");
+        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}";
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneBoundaryTest.java b/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneBoundaryTest.java
new file mode 100644
index 0000000..9049e50
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneOffsetLocalTest.java b/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneOffsetLocalTest.java
new file mode 100644
index 0000000..d375682
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneRegression.java b/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneRegression.java
new file mode 100644
index 0000000..efb72c4
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneRegression.java
@@ -0,0 +1,1182 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2009, 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 java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.Date;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.DateFormat;
+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;
+
+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 (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
+        }
+    }
+
+    /**
+     * 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.
+            boolean newDst = tz.useDaylightTime();
+            if (useDst != newDst) {
+                errln("FAIL: Modified zone(" + tz.getID() + ") - useDaylightTime has changed from " + useDst + " to " + newDst);
+            }
+            // 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);
+        }
+    }
+
+    public void TestT7107() {
+        Thread[] workers = new Thread[20];
+        for (int i = 0 ; i < workers.length; i++) {
+            workers[i] = new Thread(new Runnable() {
+                public void run() {
+                    for (int j = 0; j < 10000; j++) {
+                        try {
+                            com.ibm.icu.util.TimeZone.getTimeZone("GMT").getDisplayName();
+                        } catch (Exception e) {
+                            errln("FAIL: Caught an exception " + e);
+                        }
+                    }
+                }
+            });
+        }
+        for (Thread wk : workers) {
+            wk.start();
+        }
+        for (Thread wk : workers) {
+            try {
+                wk.join();
+            } catch (InterruptedException ie) {
+                
+            }
+        }
+    }
+}
+
+//eof
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneRuleTest.java b/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneRuleTest.java
new file mode 100644
index 0000000..af673c4
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneRuleTest.java
@@ -0,0 +1,1664 @@
+/*
+ *******************************************************************************
+ * 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++) {
+            if (skipIfBeforeICU(4,3,2) && tzids[i].equals("Asia/Amman")) {
+                // See #7008
+                continue;
+            }
+            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++) {
+                if (skipIfBeforeICU(4,3,2) && tzids[i].equals("Asia/Amman")) {
+                    // See #7008
+                    continue;
+                }
+                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/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java b/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
new file mode 100644
index 0000000..3507c62
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/timezone/TimeZoneTest.java
@@ -0,0 +1,1627 @@
+/**
+ *******************************************************************************
+ * 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;
+
+    // TODO: We should probably read following data at runtime, so we can update
+    // the these values every release with necessary data changes.
+
+    // Some test case data is current date/tzdata version sensitive and producing errors
+    // when year/rule are changed.
+    static final int REFERENCE_YEAR = 2009;
+    static final String REFERENCE_DATA_VERSION = "2009d";
+
+
+
+    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 {
+
+        // This test case is tzdata version sensitive.
+        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.
+        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+01:00",
+            "GMT-0030",         "-1800",        "GMT-00:30",
+            "GMT+15:99",        "0",            "GMT",
+            "GMT+",             "0",            "GMT",
+            "GMT-",             "0",            "GMT",
+            "GMT+0:",           "0",            "GMT",
+            "GMT-:",            "0",            "GMT",
+            "GMT+0010",         "600",          "GMT+00:10",
+            "GMT-10",           "-36000",       "GMT-10:00",
+            "GMT+30",           "0",            "GMT",
+            "GMT-3:30",         "-12600",       "GMT-03:30",
+            "GMT-230",          "-9000",        "GMT-02:30",
+            "GMT+05:13:05",     "18785",        "GMT+05:13:05",
+            "GMT-71023",        "-25823",       "GMT-07:10:23",
+            "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
+        //*****************************************************************
+
+        // Test to allow the user to choose to get all the forms 
+        // (z, zzzz, Z, ZZZZ, v, vvvv)
+        // todo: check to see whether we can test for all of pst, pdt, pt
+        Object[] DATA = {
+            // z and zzzz
+            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",                
+            // v and vvvv
+            Boolean.FALSE, new Integer(TimeZone.SHORT_GENERIC), "PT",
+            Boolean.TRUE,  new Integer(TimeZone.SHORT_GENERIC), "PT",
+            Boolean.FALSE, new Integer(TimeZone.LONG_GENERIC),  "Pacific Time",
+            Boolean.TRUE,  new Integer(TimeZone.LONG_GENERIC),  "Pacific Time",  
+            // z and ZZZZ
+            Boolean.FALSE, new Integer(TimeZone.SHORT_GMT), "-0800",
+            Boolean.TRUE,  new Integer(TimeZone.SHORT_GMT), "-0700",
+            Boolean.FALSE, new Integer(TimeZone.LONG_GMT),  "GMT-08:00",
+            Boolean.TRUE,  new Integer(TimeZone.LONG_GMT),  "GMT-07:00",              
+            // V and VVVV
+            Boolean.FALSE, new Integer(TimeZone.SHORT_COMMONLY_USED), "PST",
+            Boolean.TRUE,  new Integer(TimeZone.SHORT_COMMONLY_USED), "PDT",
+            Boolean.FALSE, new Integer(TimeZone.GENERIC_LOCATION),  "United States (Los Angeles)",
+            Boolean.TRUE,  new Integer(TimeZone.GENERIC_LOCATION),  "United States (Los Angeles)",
+        };
+
+        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-03:00", null},
+                {"GMT+4", "GMT+04:00", null},
+                {"GMT-055", "GMT-00:55", null},
+                {"GMT+430", "GMT+04:30", null},
+                {"GMT-12:15", "GMT-12:15", null},
+                {"GMT-091015", "GMT-09:10:15", 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 isReferenceYear = true;
+        GregorianCalendar cal = new GregorianCalendar(TimeZone.getTimeZone("Etc/GMT"));
+        if (cal.get(Calendar.YEAR) != REFERENCE_YEAR) {
+            isReferenceYear = false;
+        }
+        boolean isICUTimeZone = (TimeZone.getDefaultTimeZoneType() == TimeZone.TIMEZONE_ICU);
+
+        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])) {
+                if (isReferenceYear
+                		&& (isICUTimeZone || !((Boolean)zoneDisplayTestData[testNum][2]).booleanValue())) {
+                    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);
+                } else {
+                    logln("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) {
+            logln("Note: Errors could be the result of changes to zoneStrings locale data");
+        }
+    }
+}
+
+//eof
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/util/ArrayComparator.java b/main/tests/core/src/com/ibm/icu/dev/test/util/ArrayComparator.java
new file mode 100644
index 0000000..a7f37a5
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/util/ArrayComparator.java
@@ -0,0 +1,76 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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/main/tests/core/src/com/ibm/icu/dev/test/util/CalendarFieldsSet.java b/main/tests/core/src/com/ibm/icu/dev/test/util/CalendarFieldsSet.java
new file mode 100644
index 0000000..c1a25ba
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/util/CompactArrayTest.java b/main/tests/core/src/com/ibm/icu/dev/test/util/CompactArrayTest.java
new file mode 100644
index 0000000..2c7a763
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/util/CurrencyTest.java b/main/tests/core/src/com/ibm/icu/dev/test/util/CurrencyTest.java
new file mode 100644
index 0000000..5ab77b9
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/util/CurrencyTest.java
@@ -0,0 +1,488 @@
+/*
+ **********************************************************************
+ * Copyright (c) 2002-2009, 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 java.util.Arrays;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.text.DecimalFormatSymbols;
+import com.ibm.icu.util.Currency;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * @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(){
+
+        final String[][] PREFERRED = {
+            {"root",            "USD"},
+            {"und",             "USD"},
+            {"und_ZZ",          "USD"},
+            {"en_US",           "USD"},
+            {"en_029",          "USD"},
+            {"en_TH",           "THB"},
+            {"de",              "EUR"},
+            {"de_DE",           "EUR"},
+            {"ar",              "EGP"},
+            {"ar_PS",           "JOD", "ILS"},
+            {"en@currency=CAD",     "USD"},
+            {"fr@currency=ZZZ",     "EUR"},
+            {"de_DE@currency=DEM",  "EUR"},
+        };
+
+        String[] ALL = Currency.getKeywordValuesForLocale("currency", ULocale.getDefault(), false);
+        HashSet ALLSET = new HashSet();
+        for (int i = 0; i < ALL.length; i++) {
+            ALLSET.add(ALL[i]);
+        }
+
+        for (int i = 0; i < PREFERRED.length; i++) {
+            ULocale loc = new ULocale(PREFERRED[i][0]);
+            String[] expected = new String[PREFERRED[i].length - 1];
+            System.arraycopy(PREFERRED[i], 1, expected, 0, expected.length);
+
+            String[] pref = Currency.getKeywordValuesForLocale("currency", loc, true);
+            boolean matchPref = false;
+            if (pref.length == expected.length) {
+                matchPref = true;
+                for (int j = 0; j < pref.length; j++) {
+                    if (!pref[j].equals(expected[j])) {
+                        matchPref = false;
+                    }
+                }
+            }
+            if (!matchPref) {
+                errln("FAIL: Preferred values for locale " + loc 
+                        + " got:" + Arrays.toString(pref) + " expected:" + Arrays.toString(expected));
+            }
+
+            String[] all = Currency.getKeywordValuesForLocale("currency", loc, false);
+            boolean matchAll = false;
+            if (all.length == ALLSET.size()) {
+                matchAll = true;
+                for (int j = 0; j < all.length; j++) {
+                    if (!ALLSET.contains(all[j])) {
+                        matchAll = false;
+                        break;
+                    }
+                }
+            }
+            if (!matchAll) {
+                errln("FAIL: All values for locale " + loc
+                        + " got:" + Arrays.toString(all)); 
+            }
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/util/DateTimeStyleSet.java b/main/tests/core/src/com/ibm/icu/dev/test/util/DateTimeStyleSet.java
new file mode 100644
index 0000000..8f86acb
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilities.java b/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilities.java
new file mode 100644
index 0000000..e4e2ee4
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilitiesData.java b/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilitiesData.java
new file mode 100644
index 0000000..ef9d8bd
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilitiesData.java
@@ -0,0 +1,186 @@
+/** 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.3.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 int UAcceptResult = 4;
+    public static final int UColAttributeValue = 5;
+    public static final String [] TYPES = { 
+        "UDebugEnumType", /* 0 */
+        "UCalendarDateFields", /* 1 */
+        "UCalendarMonths", /* 2 */
+        "UDateFormatStyle", /* 3 */
+        "UAcceptResult", /* 4 */
+        "UColAttributeValue", /* 5 */
+    };
+
+    public static final String [][] NAMES = { 
+        /* UDebugEnumType, 0 */
+        { 
+           "UDebugEnumType", /* 0 */ 
+           "UCalendarDateFields", /* 1 */ 
+           "UCalendarMonths", /* 2 */ 
+           "UDateFormatStyle", /* 3 */ 
+           "UAcceptResult", /* 4 */ 
+           "UColAttributeValue", /* 5 */ 
+        },
+        /* 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 */ 
+        },
+        /* UAcceptResult, 4 */
+        { 
+           "FAILED", /* 0 */ 
+           "VALID", /* 1 */ 
+           "FALLBACK", /* 2 */ 
+        },
+        /* UColAttributeValue, 5 */
+        { 
+           "PRIMARY", /* 0 */ 
+           "SECONDARY", /* 1 */ 
+           "TERTIARY", /* 2 */ 
+           "QUATERNARY", /* 3 */ 
+           "IDENTICAL", /* 4 */ 
+           "OFF", /* 5 */ 
+           "ON", /* 6 */ 
+           "SHIFTED", /* 7 */ 
+           "NON_IGNORABLE", /* 8 */ 
+           "LOWER_FIRST", /* 9 */ 
+           "UPPER_FIRST", /* 10 */ 
+        },
+    };
+
+    public static final int [][] VALUES = { 
+        /* UDebugEnumType, 0 */
+        { 
+           0, /* UDebugEnumType */
+           1, /* UCalendarDateFields */
+           2, /* UCalendarMonths */
+           3, /* UDateFormatStyle */
+           4, /* UAcceptResult */
+           5, /* UColAttributeValue */
+        },
+        /* 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 */
+        },
+        /* UAcceptResult, 4 */
+        { 
+           0, /* FAILED */
+           1, /* VALID */
+           2, /* FALLBACK */
+        },
+        /* UColAttributeValue, 5 */
+        { 
+           0, /* PRIMARY */
+           1, /* SECONDARY */
+           2, /* TERTIARY */
+           3, /* QUATERNARY */
+           4, /* IDENTICAL */
+           5, /* OFF */
+           6, /* ON */
+           7, /* SHIFTED */
+           8, /* NON_IGNORABLE */
+           9, /* LOWER_FIRST */
+           10, /* UPPER_FIRST */
+        },
+    };
+
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilitiesTest.java b/main/tests/core/src/com/ibm/icu/dev/test/util/DebugUtilitiesTest.java
new file mode 100644
index 0000000..dac8a91
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/util/DisplayNameTest.java b/main/tests/core/src/com/ibm/icu/dev/test/util/DisplayNameTest.java
new file mode 100644
index 0000000..04010a6
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/util/ElapsedTimer.java b/main/tests/core/src/com/ibm/icu/dev/test/util/ElapsedTimer.java
new file mode 100644
index 0000000..946c3de
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/util/Equator.java b/main/tests/core/src/com/ibm/icu/dev/test/util/Equator.java
new file mode 100644
index 0000000..e3b0353
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/util/FieldsSet.java b/main/tests/core/src/com/ibm/icu/dev/test/util/FieldsSet.java
new file mode 100644
index 0000000..f60a7d2
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/util/ICUBinaryTest.java b/main/tests/core/src/com/ibm/icu/dev/test/util/ICUBinaryTest.java
new file mode 100644
index 0000000..04213de
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/util/ICUResourceBundleTest.java b/main/tests/core/src/com/ibm/icu/dev/test/util/ICUResourceBundleTest.java
new file mode 100644
index 0000000..b6e1f9c
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/util/ICUResourceBundleTest.java
@@ -0,0 +1,1045 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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.JarURLConnection;
+import java.net.URL;
+import java.net.URLConnection;
+import java.nio.ByteBuffer;
+import java.util.Enumeration;
+import java.util.MissingResourceException;
+import java.util.Set;
+import java.util.TreeSet;
+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.BreakIterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.util.Calendar;
+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_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.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");
+        }
+
+        int number = -1;
+
+        // get the items by index
+        for(int i =0; i<size; i++){
+            UResourceBundle item = bundle.get(i);
+            String key = item.getKey();
+            int parsedNumber = parseTable32Key(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);
+            }
+
+        }
+
+        // search for some items by key
+        for(int i=0;i<arr.length; i++){
+            UResourceBundle item = bundle.get(arr[i].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 != arr[i].value){
+                errln("Did not get expected value in testtypes32 for key" +
+                      arr[i].key +". Expected: " + arr[i].value + " 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 NumberPatterns");
+            }
+        }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;
+
+        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 CALENDAR_RESNAME = "calendar";
+    private static final String CALENDAR_KEYWORD = "calendar";
+
+    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[] 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 calendar...");
+       getFunctionalEquivalentTestCases(ICUResourceBundle.ICU_BASE_NAME,
+                                        Calendar.class.getClassLoader(),
+               CALENDAR_RESNAME, CALENDAR_KEYWORD, false, calCases);
+
+       logln("Testing error conditions:");
+       try {
+           ClassLoader cl = BreakIterator.class.getClassLoader();
+           ICUResourceBundle.getFunctionalEquivalent(ICUResourceBundle.ICU_BRKITR_BASE_NAME, cl, "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, ClassLoader cl, 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, cl, 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");
+        }
+    }
+    private Set<String> setFromEnumeration(Enumeration<String> e) {
+        TreeSet<String> set = new TreeSet<String>();
+        while (e.hasMoreElements()) {
+            set.add(e.nextElement());
+        }
+        return set;
+    }
+    /**
+     * Test ICUResourceBundle.getKeys() for a whole bundle (top-level resource).
+     * JDK JavaDoc for ResourceBundle.getKeys() says that it returns
+     * "an Enumeration of the keys contained in this ResourceBundle and its parent bundles."
+     */
+    public void TestICUGetKeysAtTopLevel() {
+        String baseName="com/ibm/icu/dev/data/testdata";
+        UResourceBundle te_IN = UResourceBundle.getBundleInstance(baseName, "te_IN", testLoader);
+        UResourceBundle te = UResourceBundle.getBundleInstance(baseName, "te", testLoader);
+        Set<String> te_set = setFromEnumeration(te.getKeys());
+        Set<String> te_IN_set = setFromEnumeration(te_IN.getKeys());
+        assertTrue("te.getKeys().contains(string_only_in_Root)", te_set.contains("string_only_in_Root"));
+        assertTrue("te.getKeys().contains(string_only_in_te)", te_set.contains("string_only_in_te"));
+        assertFalse("te.getKeys().contains(string_only_in_te_IN)", te_set.contains("string_only_in_te_IN"));
+        assertTrue("te_IN.getKeys().contains(string_only_in_Root)", te_IN_set.contains("string_only_in_Root"));
+        assertTrue("te_IN.getKeys().contains(string_only_in_te)", te_IN_set.contains("string_only_in_te"));
+        assertTrue("te_IN.getKeys().contains(string_only_in_te_IN)", te_IN_set.contains("string_only_in_te_IN"));
+        // TODO: Check for keys of alias resource items
+    }
+    /**
+     * Test ICUResourceBundle.getKeys() for a resource item (not a whole bundle/top-level resource).
+     * This does not take parent bundles into account.
+     */
+    public void TestICUGetKeysForResourceItem() {
+        String baseName="com/ibm/icu/dev/data/testdata";
+        UResourceBundle te = UResourceBundle.getBundleInstance(baseName, "te", testLoader);
+        UResourceBundle tagged_array_in_Root_te = te.get("tagged_array_in_Root_te");
+        Set<String> keys = setFromEnumeration(tagged_array_in_Root_te.getKeys());
+        assertTrue("tagged_array_in_Root_te.getKeys().contains(tag0)", keys.contains("tag0"));
+        assertTrue("tagged_array_in_Root_te.getKeys().contains(tag1)", keys.contains("tag1"));
+        assertFalse("tagged_array_in_Root_te.getKeys().contains(tag7)", keys.contains("tag7"));
+        assertFalse("tagged_array_in_Root_te.getKeys().contains(tag12)", keys.contains("tag12"));
+        UResourceBundle array_in_Root_te = te.get("array_in_Root_te");
+        assertFalse("array_in_Root_te.getKeys().hasMoreElements()", array_in_Root_te.getKeys().hasMoreElements());
+        UResourceBundle string_in_Root_te = te.get("string_in_Root_te");
+        assertFalse("string_in_Root_te.getKeys().hasMoreElements()", string_in_Root_te.getKeys().hasMoreElements());
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/util/ICUServiceTest.java b/main/tests/core/src/com/ibm/icu/dev/test/util/ICUServiceTest.java
new file mode 100644
index 0000000..5747b1a
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/util/ICUServiceTest.java
@@ -0,0 +1,1009 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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.util.ULocale;
+
+// use java collator to remove test dependency on ICU collator
+import java.text.Collator;
+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.toLocale());
+        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.toLocale());
+        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.toLocale());
+        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/main/tests/core/src/com/ibm/icu/dev/test/util/ICUServiceTestSample.java b/main/tests/core/src/com/ibm/icu/dev/test/util/ICUServiceTestSample.java
new file mode 100644
index 0000000..6f7eddc
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/util/ICUServiceTestSample.java
@@ -0,0 +1,216 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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.util.ULocale;
+
+import java.text.Collator; // don't need ICU for this example
+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) {
+        new HelloServiceClient();
+
+        Thread t = new HelloUpdateThread();
+        t.start();
+        try {
+            t.join();
+        }
+        catch (InterruptedException e) {
+        }
+        System.out.println("done");
+    }
+
+    /**
+     * 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.toLocale());
+            return service.getDisplayNames(locale, col, null);
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/util/ICUServiceThreadTest.java b/main/tests/core/src/com/ibm/icu/dev/test/util/ICUServiceThreadTest.java
new file mode 100644
index 0000000..b7809f5
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/util/ICUServiceThreadTest.java
@@ -0,0 +1,483 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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.util.ULocale;
+
+// use java collator to remove test dependency on ICU collator
+import java.text.Collator;
+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.toLocale());
+        }
+        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/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleAliasTest.java b/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleAliasTest.java
new file mode 100644
index 0000000..e141246
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleAliasTest.java
@@ -0,0 +1,214 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2005-2009, 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.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 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/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleBuilderTest.java b/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleBuilderTest.java
new file mode 100644
index 0000000..332cdc8
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleBuilderTest.java
@@ -0,0 +1,139 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.Arrays;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.util.IllformedLocaleException;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.ULocale.Builder;
+
+/**
+ * Test cases for ULocale.LocaleBuilder
+ */
+public class LocaleBuilderTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new LocaleBuilderTest().run(args);
+    }
+
+    public void TestLocaleBuilder() {
+        // "L": +1 = language
+        // "S": +1 = script
+        // "R": +1 = region
+        // "V": +1 = variant
+        // "K": +1 = LDML key / +2 = LDML type
+        // "E": +1 = extension letter / +2 = extension value
+        // "P": +1 = private use
+        // "X": indicates an exception must be thrown
+        // "T": +1 = expected language tag
+        String[][] TESTCASE = {
+            {"L", "en", "R", "us", "T", "en-US", "en_US"},
+            {"L", "en", "R", "FR", "L", "fr", "T", "fr-FR", "fr_FR"},
+            {"L", "123", "X"},
+            {"R", "us", "T", "und-US", "_US"},
+            {"R", "usa", "X"},
+            {"R", "123", "L", "en", "T", "en-123", "en_123"},
+            {"S", "LATN", "L", "DE", "T", "de-Latn", "de_Latn"},
+            {"S", "latin", "X"},
+            {"L", "th", "R", "th", "K", "nu", "thai", "T", "th-TH-u-nu-thai", "th_TH@numbers=thai"},
+            {"E", "z", "ExtZ", "L", "en", "T", "en-z-extz", "en@z=extz"},
+            {"L", "fr", "R", "FR", "P", "Yoshito-ICU", "T", "fr-FR-x-yoshito-icu", "fr_FR@x=yoshito-icu"},
+            {"L", "ja", "R", "jp", "K", "ca", "japanese", "T", "ja-JP-u-ca-japanese", "ja_JP@calendar=japanese"},
+            {"K", "co", "PHONEBK", "K", "ca", "gregory", "L", "De", "T", "de-u-ca-gregory-co-phonebk", "de@calendar=gregorian;collation=phonebook"},
+            {"E", "o", "OPQR", "E", "a", "aBcD", "T", "und-a-abcd-o-opqr", "@a=abcd;o=opqr"},
+            {"E", "u", "nu-thai-ca-gregory", "L", "TH", "T", "th-u-ca-gregory-nu-thai", "th@calendar=gregorian;numbers=thai"},
+            {"L", "en", "K", "tz", "usnyc", "R", "US", "T", "en-US-u-tz-usnyc", "en_US@timezone=america/new_york"},
+            {"L", "de", "K", "co", "phonebk", "K", "ks", "level1", "K", "kk", "true", "T", "de-u-co-phonebk-kk-true-ks-level1", "de@collation=phonebook;colnormalization=yes;colstrength=primary"},
+//          {"L", "en", "V", "foooo_barrr", "T", "en-foooo-barrr", "en__FOOOO_BARRR"},
+        };
+
+        Builder bld = new Builder();
+        for (int tidx = 0; tidx < TESTCASE.length; tidx++) {
+            bld.clear();
+            int i = 0;
+            String[] expected = null;
+            while (true) {
+                String method = TESTCASE[tidx][i++];
+                try {
+                    if (method.equals("L")) {
+                        bld.setLanguage(TESTCASE[tidx][i++]);
+                    } else if (method.equals("S")) {
+                        bld.setScript(TESTCASE[tidx][i++]);
+                    } else if (method.equals("R")) {
+                        bld.setRegion(TESTCASE[tidx][i++]);
+                    } else if (method.equals("V")) {
+                        bld.setVariant(TESTCASE[tidx][i++]);
+                    } else if (method.equals("K")) {
+                        String key = TESTCASE[tidx][i++];
+                        String type = TESTCASE[tidx][i++];
+                        bld.setLDMLExtensionValue(key, type);
+                    } else if (method.equals("E")) {
+                        String key = TESTCASE[tidx][i++];
+                        String value = TESTCASE[tidx][i++];
+                        bld.setExtension(key.charAt(0), value);
+                    } else if (method.equals("P")) {
+                        bld.setExtension(ULocale.PRIVATE_USE_EXTENSION, TESTCASE[tidx][i++]);
+                    } else if (method.equals("X")) {
+                        errln("FAIL: No excetion was thrown - test csae: "
+                                + Arrays.toString(TESTCASE[tidx]));
+                    } else if (method.equals("T")) {
+                        expected = new String[2];
+                        expected[0] = TESTCASE[tidx][i];
+                        expected[1] = TESTCASE[tidx][i + 1];
+                        break;
+                    }
+                } catch (IllformedLocaleException e) {
+                    if (TESTCASE[tidx][i].equals("X")) {
+                        // This exception is expected
+                        break;
+                    } else {
+                        errln("FAIL: IllformedLocaleException at offset " + i
+                                + " in test case: " + Arrays.toString(TESTCASE[tidx]));
+                    }
+                }
+            }
+            if (expected != null) {
+                ULocale loc = bld.create();
+                if (!expected[1].equals(loc.toString())) {
+                    errln("FAIL: Wrong locale ID - " + loc + 
+                            " for test case: " + Arrays.toString(TESTCASE[tidx]));
+                }
+                String langtag = loc.toLanguageTag();
+                if (!expected[0].equals(langtag)) {
+                    errln("FAIL: Wrong language tag - " + langtag + 
+                            " for test case: " + Arrays.toString(TESTCASE[tidx]));
+                }
+                ULocale loc1 = ULocale.forLanguageTag(langtag);
+                if (!loc.equals(loc1)) {
+                    errln("FAIL: Language tag round trip failed for " + loc);
+                }
+            }
+        }
+    }
+
+    public void TestSetLocale() {
+        ULocale loc = new ULocale("th_TH@calendar=gregorian");
+        Builder bld = new Builder();
+        try {
+            bld.setLocale(loc);
+            ULocale loc1 = bld.create();
+            if (!loc.equals(loc1)) {
+                errln("FAIL: Locale loc1 " + loc1 + " was returned by the builder.  Expected " + loc);
+            }
+            bld.setLanguage("").setLDMLExtensionValue("ca", "buddhist")
+                .setLanguage("TH").setLDMLExtensionValue("ca", "gregory");
+            ULocale loc2 = bld.create();
+            if (!loc.equals(loc2)) {
+                errln("FAIL: Locale loc2 " + loc2 + " was returned by the builder.  Expected " + loc);
+            }            
+        } catch (IllformedLocaleException e) {
+            errln("FAIL: IllformedLocaleException: " + e.getMessage());
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleDataTest.java b/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleDataTest.java
new file mode 100644
index 0000000..8b027b4
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleDataTest.java
@@ -0,0 +1,299 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2003-2009, 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();
+    }
+    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 ||
+               locale.toString().indexOf("_PH") >= 0 || locale.toString().indexOf("_CL") >= 0 ||
+               locale.toString().indexOf("_PR") >= 0 || locale.toString().indexOf("_VE") >= 0 ||
+               locale.toString().indexOf("_CO") >= 0 || locale.toString().indexOf("_MX") >= 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));
+    }
+
+    public void TestLocaleDisplayPattern(){
+        LocaleData ld = LocaleData.getInstance();
+        logln("Default locale "+ " LocaleDisplayPattern:" + ld.getLocaleDisplayPattern());
+        logln("Default locale "+ " LocaleSeparator:" + ld.getLocaleSeparator());
+        for(int i = 0; i < availableLocales.length; i++){
+          ULocale locale = availableLocales[i];
+          ld = LocaleData.getInstance(locale);
+          logln(locale.toString() + " LocaleDisplayPattern:" + ld.getLocaleDisplayPattern());
+          logln(locale.toString() + " LocaleSeparator:" + ld.getLocaleSeparator());
+        }
+    }
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleMatcherTest.java b/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleMatcherTest.java
new file mode 100644
index 0000000..9c628b2
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/util/LocaleMatcherTest.java
@@ -0,0 +1,70 @@
+/*
+ ****************************************************************************************
+ * Copyright (C) 2009, Google, Inc.; 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.ULocale;
+import com.ibm.icu.util.LocaleMatcher;
+import com.ibm.icu.util.LocalePriorityList;
+
+/**
+ * Test the LanguageMatcher.
+ * 
+ * @author markdavis
+ */
+public class LocaleMatcherTest extends TestFmwk {
+    
+    public static void main(String[] args) throws Exception {
+        new LocaleMatcherTest().run(args);
+      }
+
+  public void testBasics() {
+    final LocaleMatcher matcher = new LocaleMatcher(LocalePriorityList
+        .add(ULocale.FRENCH).add(ULocale.UK)
+        .add(ULocale.ENGLISH).build());
+    logln(matcher.toString());
+
+    assertEquals(ULocale.UK, matcher.getBestMatch(ULocale.UK));
+    assertEquals(ULocale.ENGLISH, matcher.getBestMatch(ULocale.US));
+    assertEquals(ULocale.FRENCH, matcher.getBestMatch(ULocale.FRANCE));
+    assertEquals(ULocale.FRENCH, matcher.getBestMatch(ULocale.JAPAN));
+  }
+
+  public void testFallback() {
+    // check that script fallbacks are handled right
+    final LocaleMatcher matcher = new LocaleMatcher("zh_CN, zh_TW, iw");
+    assertEquals(new ULocale("zh_TW"), matcher.getBestMatch("zh_Hant"));
+    assertEquals(new ULocale("zh_CN"), matcher.getBestMatch("zh"));
+    assertEquals(new ULocale("zh_CN"), matcher.getBestMatch("zh_Hans_CN"));
+    assertEquals(new ULocale("zh_TW"), matcher.getBestMatch("zh_Hant_HK"));
+    assertEquals(new ULocale("he"), matcher.getBestMatch("iw_IT"));
+  }
+
+  public void testSpecials() {
+    // check that nearby languages are handled
+    final LocaleMatcher matcher = new LocaleMatcher("en, fil, ro, nn");
+    assertEquals(new ULocale("fil"), matcher.getBestMatch("tl"));
+    assertEquals(new ULocale("ro"), matcher.getBestMatch("mo"));
+    assertEquals(new ULocale("nn"), matcher.getBestMatch("nb"));
+    // make sure default works
+    assertEquals(new ULocale("en"), matcher.getBestMatch("ja"));
+  }
+
+  public void testRegionalSpecials() {
+    // verify that en_AU is closer to en_GB than to en (which is en_US)
+    final LocaleMatcher matcher = new LocaleMatcher("en, en_GB, es, es_419");
+    assertEquals("en_AU in {en, en_GB, es, es_419}", new ULocale("en_GB"), matcher.getBestMatch("en_AU"));
+    assertEquals("es_MX in {en, en_GB, es, es_419}", new ULocale("es_419"), matcher.getBestMatch("es_MX"));
+    assertEquals("es_ES in {en, en_GB, es, es_419}", new ULocale("es"), matcher.getBestMatch("es_ES"));
+  }
+  
+  private void assertEquals(Object expected, Object string) {
+      assertEquals("", expected, string);
+  }
+
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/util/LocalePriorityListTest.java b/main/tests/core/src/com/ibm/icu/dev/test/util/LocalePriorityListTest.java
new file mode 100644
index 0000000..075b8c9
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/util/LocalePriorityListTest.java
@@ -0,0 +1,56 @@
+/*
+ ****************************************************************************************
+ * Copyright (C) 2009, Google, Inc.; 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.ULocale;
+import com.ibm.icu.util.LocalePriorityList;
+
+/**
+ * Test the LanguagePriorityList
+ * @author markdavis@google.com
+ */
+public class LocalePriorityListTest extends TestFmwk {
+    
+    public static void main(String[] args) throws Exception {
+        new LocalePriorityListTest().run(args);
+      }
+
+  public void testLanguagePriorityList() {
+    final String expected = "af, en, fr";
+
+    LocalePriorityList list = LocalePriorityList.add("af, en, fr;q=0.9").build();
+    assertEquals(expected, list.toString());
+
+    // check looseness, and that later values win
+    LocalePriorityList list2 = LocalePriorityList.add(
+        ", fr ; q = 0.9 ,   en;q=0.1 , af, en, de;q=0, ").build();
+    assertEquals(expected, list2.toString());
+    assertEquals(list, list2);
+
+    LocalePriorityList list3 = LocalePriorityList
+        .add(new ULocale("af"))
+        .add(ULocale.FRENCH, 0.9d)
+        .add(ULocale.ENGLISH)
+        .build();
+    assertEquals(expected, list3.toString());
+    assertEquals(list, list3);
+    
+    LocalePriorityList list4 = LocalePriorityList
+    .add(list).build();
+    assertEquals(expected, list4.toString());
+    assertEquals(list, list4);
+    
+    LocalePriorityList list5 = LocalePriorityList.add("af, fr;q=0.9, en").build(true);
+    assertEquals("af, en, fr;q=0.9", list5.toString());
+  }
+
+private void assertEquals(Object expected, Object string) {
+    assertEquals("", expected, string);
+}
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/util/Relation.java b/main/tests/core/src/com/ibm/icu/dev/test/util/Relation.java
new file mode 100644
index 0000000..878d871
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/util/Relation.java
@@ -0,0 +1,291 @@
+/*
+ **********************************************************************
+ * Copyright (c) 2002-2009, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ **********************************************************************
+ * Author: Mark Davis
+ **********************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.lang.reflect.Constructor;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+
+import com.ibm.icu.util.Freezable;
+
+/**
+ * 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
+
+ */
+public class Relation<K, V> implements Freezable {
+    private Map<K, Set<V>> data;
+
+    Constructor<Set<V>> setCreator;
+    Object[] setComparatorParam;
+
+    public Relation(Map<K, Set<V>> map, Class<Set<V>> setCreator) {
+        this(map, setCreator, null);
+    }
+
+    public Relation(Map<K, Set<V>> map, Class<Set<V>> setCreator, Comparator<V> setComparator) {
+        try {
+            setComparatorParam = setComparator == null ? null : new Object[]{setComparator};
+            if (setComparator == null) {
+                this.setCreator = setCreator.getConstructor();
+                this.setCreator.newInstance(setComparatorParam); // check to make sure compiles
+            } else {
+                this.setCreator = setCreator.getConstructor(Comparator.class);
+                this.setCreator.newInstance(setComparatorParam); // check to make sure compiles        
+            }
+            data = map == null ? new HashMap() : map;     
+        } catch (Exception e) {
+            throw (RuntimeException) new IllegalArgumentException("Can't create new set").initCause(e);
+        }
+
+    }
+
+    public void clear() {
+        data.clear();
+    }
+
+    public boolean containsKey(Object key) {
+        return data.containsKey(key);
+    }
+
+    public boolean containsValue(Object value) {
+        for (Set<V> values : data.values()) {
+            if (values.contains(value))
+                return true;
+        }
+        return false;
+    }
+
+    public Set<Entry<K, V>> entrySet() {
+        Set<Entry<K, V>> result = new LinkedHashSet();
+        for (K key : data.keySet()) {
+            for (V value : data.get(key)) {
+                result.add(new SimpleEntry(key, value));
+            }
+        }
+        return result;
+    }
+
+    public boolean equals(Object o) {
+        if (o == null)
+            return false;
+        if (o.getClass() != this.getClass())
+            return false;
+        return data.equals(((Relation) o).data);
+    }
+
+    //  public V get(Object key) {
+    //      Set<V> set = data.get(key);
+    //      if (set == null || set.size() == 0)
+    //        return null;
+    //      return set.iterator().next();
+    //  }
+
+    public Set<V> getAll(Object key) {
+        return data.get(key);
+    }
+
+    public int hashCode() {
+        return data.hashCode();
+    }
+
+    public boolean isEmpty() {
+        return data.isEmpty();
+    }
+
+    public Set<K> keySet() {
+        return data.keySet();
+    }
+
+    public V put(K key, V value) {
+        Set<V> set = data.get(key);
+        if (set == null) {
+            data.put(key, set = newSet());
+        }
+        set.add(value);
+        return value;
+    }
+
+    public V putAll(K key, Collection<V> value) {
+        Set<V> set = data.get(key);
+        if (set == null) {
+            data.put(key, set = newSet());
+        }
+        set.addAll(value);
+        return value.size() == 0 ? null : value.iterator().next();
+    }
+
+    public V putAll(Collection<K> keys, V value) {
+        V result = null;
+        for (K key : keys) {
+            result = put(key, value);
+        }
+        return result;
+    }
+
+    private Set<V> newSet() {
+        try {
+            return (Set<V>) setCreator.newInstance(setComparatorParam);
+        } catch (Exception e) {
+            throw (RuntimeException) new IllegalArgumentException("Can't create new set").initCause(e);
+        }
+    }
+
+    public void putAll(Map<? extends K, ? extends V> t) {
+        for (K key : t.keySet()) {
+            put(key, t.get(key));
+        }
+    }
+
+    public void putAll(Relation<? extends K, ? extends V> t) {
+        for (K key : t.keySet()) {
+            for (V value : t.getAll(key)) {
+                put(key, value);
+            }
+        }
+    }
+
+    public Set<V> removeAll(K key) {
+        return data.remove(key);
+    }
+
+    public boolean remove(K key, V value) {
+        Set<V> set = data.get(key);
+        if (set == null) return false;
+        boolean result = set.remove(value);
+        if (set.size() == 0) {
+            data.remove(key);
+        }
+        return result;
+    }
+
+    public int size() {
+        return data.size();
+    }
+
+    public Collection<V> values() {
+        Set<V> result = newSet();
+        for (K key : data.keySet()) {
+            result.addAll(data.get(key));
+        }
+        return result;
+    }
+
+    public String toString() {
+        return data.toString();
+    }
+
+    static class SimpleEntry<K, V> implements Entry<K, V> {
+        K key;
+
+        V value;
+
+        public SimpleEntry(K key, V value) {
+            this.key = key;
+            this.value = value;
+        }
+
+        public SimpleEntry(Entry<K, V> e) {
+            this.key = e.getKey();
+            this.value = e.getValue();
+        }
+
+        public K getKey() {
+            return key;
+        }
+
+        public V getValue() {
+            return value;
+        }
+
+        public V setValue(V value) {
+            V oldValue = this.value;
+            this.value = value;
+            return oldValue;
+        }
+    }
+
+    public Relation<K,V> addAllInverted(Relation<V,K> source) {
+        for (V value : source.data.keySet()) {
+            for (K key : source.data.get(value)) {
+                put(key, value);
+            }
+        }
+        return this;
+    }
+
+    public Relation<K,V> addAllInverted(Map<V,K> source) {
+        for (V value : source.keySet()) {
+            put(source.get(value), value);
+        }
+        return this;
+    }
+
+    boolean frozen = false;
+
+    public boolean isFrozen() {
+        return frozen;
+    }
+
+    public Object freeze() {
+        if (!frozen) {
+            frozen = true;
+            // does not handle one level down, so we do that on a case-by-case basis
+            for (K key : data.keySet()) {
+                data.put(key, Collections.unmodifiableSet(data.get(key)));
+            }
+            // now do top level
+            data = Collections.unmodifiableMap(data);
+        }
+        return this;
+    }
+
+    public Object cloneAsThawed() {
+        // TODO do later
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean removeAll(Relation<K, V> toBeRemoved) {
+        boolean result = false;
+        for (K key : toBeRemoved.keySet()) {
+            Set<V> values = toBeRemoved.getAll(key);
+            if (values != null) {
+                result |= removeAll(key, values);
+            }
+        }
+        return result;
+    }
+
+    public boolean removeAll(K key, Iterable<V> all) {
+        boolean result = false;
+        for (V value : all) {
+            result |= remove(key, value);
+        }
+        return result;
+    }
+
+    public Set<V> removeAll(Collection<K> toBeRemoved) {
+        Set<V> result = new LinkedHashSet();
+        for (K key : toBeRemoved) {
+            final Set<V> removals = data.remove(key);
+            if (removals != null) {
+                result.addAll(removals);
+            }
+        }
+        return result;
+    }
+}
\ No newline at end of file
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/util/SortedBag.java b/main/tests/core/src/com/ibm/icu/dev/test/util/SortedBag.java
new file mode 100644
index 0000000..170e714
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/util/StringTokenizerTest.java b/main/tests/core/src/com/ibm/icu/dev/test/util/StringTokenizerTest.java
new file mode 100644
index 0000000..562610b
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/util/StringTokenizerTest.java
@@ -0,0 +1,1052 @@
+/*
+*******************************************************************************
+* Copyright (C) 1996-2009, 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.ReplaceableString;
+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");
+            }
+        }
+        
+        UnicodeSet delimiterset1 = new UnicodeSet("[" + delimiter + "]", true);
+        StringTokenizer stdelimiterset1 = new StringTokenizer(str, delimiterset1);
+        if(!(stdelimiterset1.nextElement().equals(str)))
+            errln("Constructor with a UnicodeSet to ignoreWhiteSpace is " +
+                    "to return the same string.");
+        
+        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();
+        }
+    }
+    
+    /* Tests the method
+     *      public StringBuffer _generatePattern(StringBuffer result, boolean escapeUnprintable)
+     */
+    public void Test_GeneratePattern(){
+        UnicodeSet us = new UnicodeSet();
+        StringBuffer sb = new StringBuffer();
+        try{
+            us._generatePattern(sb, true);
+            us._generatePattern(sb, false);
+            us._generatePattern(sb.append(1), true);
+            us._generatePattern(sb.append(1.0), true);
+            us._generatePattern(sb.reverse(), true);
+        } catch(Exception e){
+            errln("UnicodeSet._generatePattern is not suppose to return an exception.");
+        }
+        
+        try{
+            us._generatePattern(null, true);
+            errln("UnicodeSet._generatePattern is suppose to return an exception.");
+        } catch(Exception e){}
+    }
+    
+    /* Tests the method
+     *      public int matches(Replaceable text, int[] offset, int limit, boolean incremental)
+     */
+    public void TestMatches(){
+        // Tests when "return incremental ? U_PARTIAL_MATCH : U_MATCH;" is true and false
+        ReplaceableString rs = new ReplaceableString("dummy");
+        UnicodeSet us = new UnicodeSet(0,100000); // Create a large Unicode set
+        us.add("dummy");
+        
+        int[] offset = {0};
+        int limit = 0;
+        
+        if(us.matches(null, offset, limit, true) != UnicodeSet.U_PARTIAL_MATCH){
+            errln("UnicodeSet.matches is suppose to return " + UnicodeSet.U_PARTIAL_MATCH +
+                    " but got " + us.matches(null, offset, limit, true));
+        }
+        
+        if(us.matches(null, offset, limit, false) != UnicodeSet.U_MATCH){
+            errln("UnicodeSet.matches is suppose to return " + UnicodeSet.U_MATCH +
+                    " but got " + us.matches(null, offset, limit, false));
+        }
+        
+        // Tests when "int maxLen = forward ? limit-offset[0] : offset[0]-limit;" is true and false
+        try{
+            offset[0] = 0; // Takes the letter "d"
+            us.matches(rs, offset, 1, true);
+            offset[0] = 4; // Takes the letter "y"
+            us.matches(rs, offset, 1, true);
+        } catch(Exception e) {
+            errln("UnicodeSet.matches is not suppose to return an exception");
+        }
+        
+        // TODO: Tests when "if (forward && length < highWaterLength)" is true
+    }
+    
+    /* Tests the method
+     *      private static int matchRest (Replaceable text, int start, int limit, String s)
+     * from public int matches(Replaceable text, ...
+     */
+    public void TestMatchRest(){
+        // TODO: Tests when "if (maxLen > slen) maxLen = slen;" is true and false
+    }
+    
+    /* Tests the method
+     *      public int matchesAt(CharSequence text, int offset)
+     */
+    public void TestMatchesAt(){
+        UnicodeSet us = new UnicodeSet();           // Empty set
+        us.matchesAt((CharSequence)"dummy", 0);
+        us.add("dummy");                            // Add an item
+        
+        us.matchesAt((CharSequence)"dummy", 0);
+        us.add("dummy2");                           // Add another item
+        
+        us.matchesAt((CharSequence)"yummy", 0);     //charAt(0) >
+        us.matchesAt((CharSequence)"amy", 0);       //charAt(0) <
+        
+        UnicodeSet us1 = new UnicodeSet(0,100000);  // Increase the set
+        us1.matchesAt((CharSequence)"dummy", 0);
+    }
+    
+    /* Tests the method
+     *      public int indexOf(int c)
+     */
+    public void TestIndexOf(){
+        // Tests when "if (c < MIN_VALUE || c > MAX_VALUE)" is true
+        UnicodeSet us = new UnicodeSet();
+        int[] invalid = {UnicodeSet.MIN_VALUE-1, UnicodeSet.MIN_VALUE-2,
+                UnicodeSet.MAX_VALUE+1, UnicodeSet.MAX_VALUE+2};
+        int[] valid = {UnicodeSet.MIN_VALUE, UnicodeSet.MIN_VALUE+1, 
+                UnicodeSet.MAX_VALUE, UnicodeSet.MAX_VALUE-1};
+        
+        for(int i=0; i < invalid.length; i++){
+            try{
+                us.indexOf(invalid[i]);
+                errln("UnicodeSet.indexOf is suppose to return an exception " +
+                        "for a value of " + invalid[i]);
+            } catch(Exception e){}
+        }
+        
+        for(int i=0; i < valid.length; i++){
+            try{
+                us.indexOf(valid[i]);
+            } catch(Exception e){
+                errln("UnicodeSet.indexOf is not suppose to return an exception " +
+                        "for a value of " + valid[i]);
+            }
+        }
+    }
+    
+    /* Tests the method
+     *      public int charAt(int index)
+     */
+    public void TestCharAt(){
+        UnicodeSet us = new UnicodeSet();
+        
+        // Test when "if (index >= 0)" is false
+        int[] invalid = {-100,-10,-5,-2,-1};
+        for(int i=0; i < invalid.length; i++){
+            if(us.charAt(invalid[i]) != -1){
+                errln("UnicodeSet.charAt(int index) was suppose to return -1 "
+                        + "for an invalid input of " + invalid[i]);
+            }
+        }
+    }
+    
+    /* Tests the method
+     *      private UnicodeSet add_unchecked(int start, int end)
+     * from public UnicodeSet add(int start, int end)
+     */
+     public void TestAdd_int_int(){
+         UnicodeSet us = new UnicodeSet();
+         int[] invalid = {UnicodeSet.MIN_VALUE-1, UnicodeSet.MIN_VALUE-2,
+                 UnicodeSet.MAX_VALUE+1, UnicodeSet.MAX_VALUE+2};
+         
+         // Tests when "if (start < MIN_VALUE || start > MAX_VALUE)" is true
+         for(int i=0; i < invalid.length; i++){
+             try{
+                 us.add(invalid[i], UnicodeSet.MAX_VALUE);
+                 errln("UnicodeSet.add(int start, int end) was suppose to give "
+                         + "an exception for an start invalid input of "
+                         + invalid[i]);
+             } catch (Exception e){}
+         }
+         
+         // Tests when "if (end < MIN_VALUE || end > MAX_VALUE)" is true
+         for(int i=0; i < invalid.length; i++){
+             try{
+                 us.add(UnicodeSet.MIN_VALUE, invalid[i]);
+                 errln("UnicodeSet.add(int start, int end) was suppose to give "
+                         + "an exception for an end invalid input of "
+                         + invalid[i]);
+             } catch (Exception e){}
+         }
+         
+         // Tests when "else if (start == end)" is false
+         if(!(us.add(UnicodeSet.MIN_VALUE+1, UnicodeSet.MIN_VALUE).equals(us)))
+             errln("UnicodeSet.add(int start, int end) was suppose to return "
+                     + "the same object because start of value " + (UnicodeSet.MIN_VALUE+1)
+                     + " is greater than end of value " + UnicodeSet.MIN_VALUE);
+         
+         if(!(us.add(UnicodeSet.MAX_VALUE, UnicodeSet.MAX_VALUE-1).equals(us)))
+             errln("UnicodeSet.add(int start, int end) was suppose to return "
+                     + "the same object because start of value " + UnicodeSet.MAX_VALUE
+                     + " is greater than end of value " + (UnicodeSet.MAX_VALUE-1));
+     }
+     
+     /* Tests the method
+      *     private final UnicodeSet add_unchecked(int c)
+      * from public final UnicodeSet add(int c)
+      */
+     public void TestAdd_int(){
+         UnicodeSet us = new UnicodeSet();
+         int[] invalid = {UnicodeSet.MIN_VALUE-1, UnicodeSet.MIN_VALUE-2,
+                 UnicodeSet.MAX_VALUE+1, UnicodeSet.MAX_VALUE+2};
+         
+         // Tests when "if (c < MIN_VALUE || c > MAX_VALUE)" is true
+         for(int i=0; i < invalid.length; i++){
+             try{
+                 us.add(invalid[i]);
+                 errln("UnicodeSet.add(int c) was suppose to give "
+                         + "an exception for an start invalid input of "
+                         + invalid[i]);
+             } catch (Exception e){}
+         }
+         
+         // Tests when "if (c == MAX_VALUE)" is true
+         // TODO: Check comment in UnicodeSet.java
+     }
+     
+     /* Tests the method
+      *     private static int getSingleCP(String s)
+      * from public final boolean contains(String s)
+      */
+     public void TestGetSingleCP(){
+         UnicodeSet us = new UnicodeSet();
+         // Tests when "if (s.length() < 1)" is true
+         try{
+             us.contains("");
+             errln("UnicodeSet.getSingleCP is suppose to give an exception for " +
+                     "an empty string.");
+         } catch (Exception e){}
+         
+         try{
+             us.contains((String)null);
+             errln("UnicodeSet.getSingleCP is suppose to give an exception for " +
+             "a null string.");
+         } catch (Exception e){}
+         
+         // Tests when "if (cp > 0xFFFF)" is true
+         String[] cases = {"\uD811\uDC00","\uD811\uDC11","\uD811\uDC22"}; 
+         for(int i=0; i<cases.length; i++){
+             try{
+                 us.contains(cases[i]);
+             } catch (Exception e){
+                 errln("UnicodeSet.getSingleCP is not suppose to give an exception for " +
+                     "a null string.");
+             }
+         }
+     }
+     
+     /* Tests the method
+      *     public final UnicodeSet removeAllStrings()
+      */
+     public void TestRemoveAllString(){
+         // Tests when "if (strings.size() != 0)" is false
+         UnicodeSet us = new UnicodeSet();
+         try{
+             us.removeAllStrings();
+         } catch(Exception e){
+             errln("UnicodeSet.removeAllString() was not suppose to given an " +
+                     "exception for a strings size of 0");
+         }
+     }
+     
+     /* Tests the method
+      *     public UnicodeSet retain(int start, int end)
+      */
+      public void TestRetain_int_int(){
+          UnicodeSet us = new UnicodeSet();
+          int[] invalid = {UnicodeSet.MIN_VALUE-1, UnicodeSet.MIN_VALUE-2,
+                  UnicodeSet.MAX_VALUE+1, UnicodeSet.MAX_VALUE+2};
+          
+          // Tests when "if (start < MIN_VALUE || start > MAX_VALUE)" is true
+          for(int i=0; i < invalid.length; i++){
+              try{
+                  us.retain(invalid[i], UnicodeSet.MAX_VALUE);
+                  errln("UnicodeSet.retain(int start, int end) was suppose to give "
+                          + "an exception for an start invalid input of "
+                          + invalid[i]);
+              } catch (Exception e){}
+          }
+          
+          // Tests when "if (end < MIN_VALUE || end > MAX_VALUE)" is true
+          for(int i=0; i < invalid.length; i++){
+              try{
+                  us.retain(UnicodeSet.MIN_VALUE, invalid[i]);
+                  errln("UnicodeSet.retain(int start, int end) was suppose to give "
+                          + "an exception for an end invalid input of "
+                          + invalid[i]);
+              } catch (Exception e){}
+          }
+          
+          // Tests when "if (start <= end)" is false
+          try{
+              us.retain(UnicodeSet.MIN_VALUE+1, UnicodeSet.MIN_VALUE);
+          } catch(Exception e){
+              errln("UnicodeSet.retain(int start, int end) was not suppose to give "
+                      + "an exception.");
+          }
+          
+          try{
+              us.retain(UnicodeSet.MAX_VALUE, UnicodeSet.MAX_VALUE-1);
+          } catch(Exception e){
+              errln("UnicodeSet.retain(int start, int end) was not suppose to give "
+                      + "an exception.");
+          }
+      }
+      
+      /* Tests the method
+       *        public final UnicodeSet retain(String s)
+       */
+      public void TestRetain_String(){
+          // Tests when "if (isIn && size() == 1)" is true
+          UnicodeSet us = new UnicodeSet();
+          us.add("dummy");
+          if(!(us.retain("dummy").equals(us))){
+              errln("UnicodeSet.retain(String s) was suppose to return the " +
+                      "same UnicodeSet since the string was found in the original.");
+          }
+      }
+      
+      /* Tests the method
+       *     public UnicodeSet remove(int start, int end)
+       */
+       public void TestRemove(){
+           UnicodeSet us = new UnicodeSet();
+           int[] invalid = {UnicodeSet.MIN_VALUE-1, UnicodeSet.MIN_VALUE-2,
+                   UnicodeSet.MAX_VALUE+1, UnicodeSet.MAX_VALUE+2};
+           
+           // Tests when "if (start < MIN_VALUE || start > MAX_VALUE)" is true
+           for(int i=0; i < invalid.length; i++){
+               try{
+                   us.remove(invalid[i], UnicodeSet.MAX_VALUE);
+                   errln("UnicodeSet.remove(int start, int end) was suppose to give "
+                           + "an exception for an start invalid input of "
+                           + invalid[i]);
+               } catch (Exception e){}
+           }
+           
+           // Tests when "if (end < MIN_VALUE || end > MAX_VALUE)" is true
+           for(int i=0; i < invalid.length; i++){
+               try{
+                   us.remove(UnicodeSet.MIN_VALUE, invalid[i]);
+                   errln("UnicodeSet.remove(int start, int end) was suppose to give "
+                           + "an exception for an end invalid input of "
+                           + invalid[i]);
+               } catch (Exception e){}
+           }
+           
+           // Tests when "if (start <= end)" is false
+           try{
+               us.remove(UnicodeSet.MIN_VALUE+1, UnicodeSet.MIN_VALUE);
+           } catch(Exception e){
+               errln("UnicodeSet.remove(int start, int end) was not suppose to give "
+                       + "an exception.");
+           }
+           
+           try{
+               us.remove(UnicodeSet.MAX_VALUE, UnicodeSet.MAX_VALUE-1);
+           } catch(Exception e){
+               errln("UnicodeSet.remove(int start, int end) was not suppose to give "
+                       + "an exception.");
+           }
+       }
+       
+       /* Tests the method
+        *     public UnicodeSet complement(int start, int end)
+        */
+        public void TestComplement_int_int(){
+            UnicodeSet us = new UnicodeSet();
+            int[] invalid = {UnicodeSet.MIN_VALUE-1, UnicodeSet.MIN_VALUE-2,
+                    UnicodeSet.MAX_VALUE+1, UnicodeSet.MAX_VALUE+2};
+            
+            // Tests when "if (start < MIN_VALUE || start > MAX_VALUE)" is true
+            for(int i=0; i < invalid.length; i++){
+                try{
+                    us.complement(invalid[i], UnicodeSet.MAX_VALUE);
+                    errln("UnicodeSet.complement(int start, int end) was suppose to give "
+                            + "an exception for an start invalid input of "
+                            + invalid[i]);
+                } catch (Exception e){}
+            }
+            
+            // Tests when "if (end < MIN_VALUE || end > MAX_VALUE)" is true
+            for(int i=0; i < invalid.length; i++){
+                try{
+                    us.complement(UnicodeSet.MIN_VALUE, invalid[i]);
+                    errln("UnicodeSet.complement(int start, int end) was suppose to give "
+                            + "an exception for an end invalid input of "
+                            + invalid[i]);
+                } catch (Exception e){}
+            }
+            
+            // Tests when "if (start <= end)" is false
+            try{
+                us.complement(UnicodeSet.MIN_VALUE+1, UnicodeSet.MIN_VALUE);
+            } catch(Exception e){
+                errln("UnicodeSet.complement(int start, int end) was not suppose to give "
+                        + "an exception.");
+            }
+            
+            try{
+                us.complement(UnicodeSet.MAX_VALUE, UnicodeSet.MAX_VALUE-1);
+            } catch(Exception e){
+                errln("UnicodeSet.complement(int start, int end) was not suppose to give "
+                        + "an exception.");
+            }
+        }
+        
+        /* Tests the method
+         *      public final UnicodeSet complement(String s)
+         */
+        public void TestComplement_String(){
+            // Tests when "if (cp < 0)" is false
+            UnicodeSet us = new UnicodeSet();
+            us.add("dummy");
+            try{
+                us.complement("dummy");
+            } catch (Exception e){
+                errln("UnicodeSet.complement(String s) was not suppose to give "
+                        + "an exception for 'dummy'.");
+            }
+            
+            // Tests when "if (strings.contains(s))" is true
+            us = new UnicodeSet();
+            us.add("\uDC11");
+            try{
+                us.complement("\uDC11");
+            } catch (Exception e){
+                errln("UnicodeSet.complement(String s) was not suppose to give "
+                        + "an exception for '\uDC11'.");
+            }
+        }
+        
+        /* Tests the method
+         *      public boolean contains(int c)
+         */
+        public void TestContains_int(){
+            UnicodeSet us = new UnicodeSet();
+            int[] invalid = {UnicodeSet.MIN_VALUE-1, UnicodeSet.MIN_VALUE-2,
+                    UnicodeSet.MAX_VALUE+1, UnicodeSet.MAX_VALUE+2};
+            
+            // Tests when "if (c < MIN_VALUE || c > MAX_VALUE)" is true
+            for(int i=0; i < invalid.length; i++){
+                try{
+                    us.contains(invalid[i]);
+                    errln("UnicodeSet.contains(int c) was suppose to give "
+                            + "an exception for an start invalid input of "
+                            + invalid[i]);
+                } catch (Exception e){}
+            }
+        }
+        
+        /* Tests the method
+         *     public boolean contains(int start, int end)
+         */
+         public void TestContains_int_int(){
+             UnicodeSet us = new UnicodeSet();
+             int[] invalid = {UnicodeSet.MIN_VALUE-1, UnicodeSet.MIN_VALUE-2,
+                     UnicodeSet.MAX_VALUE+1, UnicodeSet.MAX_VALUE+2};
+             
+             // Tests when "if (start < MIN_VALUE || start > MAX_VALUE)" is true
+             for(int i=0; i < invalid.length; i++){
+                 try{
+                     us.contains(invalid[i], UnicodeSet.MAX_VALUE);
+                     errln("UnicodeSet.contains(int start, int end) was suppose to give "
+                             + "an exception for an start invalid input of "
+                             + invalid[i]);
+                 } catch (Exception e){}
+             }
+             
+             // Tests when "if (end < MIN_VALUE || end > MAX_VALUE)" is true
+             for(int i=0; i < invalid.length; i++){
+                 try{
+                     us.contains(UnicodeSet.MIN_VALUE, invalid[i]);
+                     errln("UnicodeSet.contains(int start, int end) was suppose to give "
+                             + "an exception for an end invalid input of "
+                             + invalid[i]);
+                 } catch (Exception e){}
+             }
+         }
+         
+         /* Tests the method
+          *     public String getRegexEquivalent()
+          */
+         public void TestGetRegexEquivalent(){
+             UnicodeSet us = new UnicodeSet();
+             String res = us.getRegexEquivalent();
+             if(!(res.equals("[]")))
+                 errln("UnicodeSet.getRegexEquivalent is suppose to return '[]' " +
+                         "but got " + res);
+         }
+         
+         /* Tests the method
+          *     public boolean containsNone(int start, int end)
+          */
+          public void TestContainsNone(){
+              UnicodeSet us = new UnicodeSet();
+              int[] invalid = {UnicodeSet.MIN_VALUE-1, UnicodeSet.MIN_VALUE-2,
+                      UnicodeSet.MAX_VALUE+1, UnicodeSet.MAX_VALUE+2};
+              
+              // Tests when "if (start < MIN_VALUE || start > MAX_VALUE)" is true
+              for(int i=0; i < invalid.length; i++){
+                  try{
+                      us.containsNone(invalid[i], UnicodeSet.MAX_VALUE);
+                      errln("UnicodeSet.containsNoneint start, int end) was suppose to give "
+                              + "an exception for an start invalid input of "
+                              + invalid[i]);
+                  } catch (Exception e){}
+              }
+              
+              // Tests when "if (end < MIN_VALUE || end > MAX_VALUE)" is true
+              for(int i=0; i < invalid.length; i++){
+                  try{
+                      us.containsNone(UnicodeSet.MIN_VALUE, invalid[i]);
+                      errln("UnicodeSet.containsNone(int start, int end) was suppose to give "
+                              + "an exception for an end invalid input of "
+                              + invalid[i]);
+                  } catch (Exception e){}
+              }
+              
+              // Tests when "if (start < list[++i])" is false
+              try{
+                  us.add(0);
+                  us.containsNone(1, 2); // 1 > 0
+              } catch (Exception e){
+                  errln("UnicodeSet.containsNone(int start, int end) was not suppose to give " +
+                          "an exception.");
+              }
+          }
+}
\ No newline at end of file
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/util/TestAll.java b/main/tests/core/src/com/ibm/icu/dev/test/util/TestAll.java
new file mode 100644
index 0000000..e522ebb
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/util/TestAll.java
@@ -0,0 +1,43 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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",
+            "LocaleBuilderTest",
+            "LocaleMatcherTest",
+            "LocalePriorityListTest",
+        },
+              "Test miscellaneous public utilities");
+    }
+
+    public static final String CLASS_TARGET_NAME = "Util";
+}
+
+
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/util/TestData_en.jpp b/main/tests/core/src/com/ibm/icu/dev/test/util/TestData_en.jpp
new file mode 100644
index 0000000..812f983
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/util/TestDefaultPackageLoading.jpp b/main/tests/core/src/com/ibm/icu/dev/test/util/TestDefaultPackageLoading.jpp
new file mode 100644
index 0000000..3312dd3
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/util/TextTrieMapTest.java b/main/tests/core/src/com/ibm/icu/dev/test/util/TextTrieMapTest.java
new file mode 100644
index 0000000..f70a1ef
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/util/TrieTest.java b/main/tests/core/src/com/ibm/icu/dev/test/util/TrieTest.java
new file mode 100644
index 0000000..977d40b
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/util/ULocaleTest.java b/main/tests/core/src/com/ibm/icu/dev/test/util/ULocaleTest.java
new file mode 100644
index 0000000..fb0c028
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/util/ULocaleTest.java
@@ -0,0 +1,3877 @@
+/*
+**********************************************************************
+* 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.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.IllformedLocaleException;
+import com.ibm.icu.util.LocaleData;
+import com.ibm.icu.util.ULocale;
+import com.ibm.icu.util.UResourceBundle;
+import com.ibm.icu.util.VersionInfo;
+import com.ibm.icu.util.ULocale.Builder;
+
+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 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");
+        // Java Locale for th_TH with Thai digits
+        Locale thTHTH = new Locale("th", "TH", "TH");
+ 
+        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);
+
+        // Java th_TH_TH -> ICU th_TH@numbers=thai
+        ULocale.setDefault(new ULocale("th@numbers=thai"));
+        if (!Locale.getDefault().equals(thTHTH)) {
+            errln("FAIL: ULocale#setDefault failed to set Java Locale th_TH_TH /actual: " + Locale.getDefault());
+        }
+        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("zu_ZA")){
+            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)"
+            };
+            String[] names2 = {
+                    "Simplified Chinese (China)", "Chinesisch (vereinfacht) (China)", "chinois simplifi\u00E9 (Chine)"
+                };
+            ULocale locale = new ULocale("zh_CN");
+            ULocale locale2 = new ULocale("zh_Hans_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 + "'");
+                }
+            }
+            for (int i = 0; i < locales.length; ++i) {
+                String name = locale2.getDisplayNameWithDialect(locales[i]);
+                if (!names2[i].equals(name)) {
+                    errln("expected '" + names2[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", "Simplified Chinese 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_Yiii_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",
+                "sw_Latn_CD",
+                "sw_CD"
+            }, {
+                "und_CF",
+                "fr_Latn_CF",
+                "fr_CF"
+            }, {
+                "und_CG",
+                "fr_Latn_CG",
+                "fr_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",
+                "crk_Cans_CA",
+                "crk"
+            }, {
+                "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",
+                "en_Latn_ET",
+                "en_ET"
+            }, {
+                "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",
+                "en_Latn_GU",
+                "en_GU"
+            }, {
+                "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",
+                "en_Latn_ET",
+                "en_ET"
+            }, {
+                "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",
+                "en_Latn_NG",
+                "en_NG"
+            }, {
+                "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_Latn_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",
+                "en_Latn_NG",
+                "en_NG"
+            }, {
+                "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",
+                "en_Latn_NR",
+                "en_NR"
+            }, {
+                "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",
+                "fr_Latn_PF",
+                "fr_PF"
+            }, {
+                "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",
+                "fr_Latn_TD",
+                "fr_TD"
+            }, {
+                "und_TG",
+                "fr_Latn_TG",
+                "fr_TG"
+            }, {
+                "und_TH",
+                "th_Thai_TH",
+                "th"
+            }, {
+                "und_TJ",
+                "tg_Cyrl_TJ",
+                "tg"
+            }, {
+                "und_TK",
+                "en_Latn_TK",
+                "en_TK"
+            }, {
+                "und_TL",
+                "pt_Latn_TL",
+                "pt_TL"
+            }, {
+                "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",
+                "bi_Latn_VU",
+                "bi"
+            }, {
+                "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",
+                "ii_Yiii_CN",
+                "ii"
+            }, {
+                "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",
+                "za_Latn_CN",
+                "za"
+            }, {
+                "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());
+                }
+            }
+        }
+    }
+    public void TestCLDRVersion() {
+        //VersionInfo zeroVersion = VersionInfo.getInstance(0, 0, 0, 0);
+        VersionInfo testExpect;
+        VersionInfo testCurrent;
+        VersionInfo cldrVersion;
+ 
+        cldrVersion = LocaleData.getCLDRVersion();
+        
+        this.logln("uloc_getCLDRVersion() returned: '"+cldrVersion+"'");
+        
+        // why isn't this public for tests somewhere?
+        final ClassLoader testLoader = ICUResourceBundleTest.class.getClassLoader();
+        UResourceBundle bundle = (UResourceBundle) UResourceBundle.getBundleInstance("com/ibm/icu/dev/data/testdata", ULocale.ROOT, testLoader);
+        
+        testExpect = VersionInfo.getInstance(bundle.getString("ExpectCLDRVersionAtLeast"));
+        testCurrent = VersionInfo.getInstance(bundle.getString("CurrentCLDRVersion"));
+
+        
+        logln("(data) ExpectCLDRVersionAtLeast { "+testExpect+""); 
+        if(cldrVersion.compareTo(testExpect)<0) {
+            errln("CLDR version is too old, expect at least "+testExpect+".");
+        }
+
+        int r = cldrVersion.compareTo(testCurrent);
+        if ( r < 0 ) {
+            logln("CLDR version is behind 'current' (for testdata/root.txt) "+testCurrent+". Some things may fail.\n");
+        } else if ( r > 0) {
+            logln("CLDR version is ahead of 'current' (for testdata/root.txt) "+testCurrent+". Some things may fail.\n");
+        } else {
+            // CLDR version is OK.
+        }
+    }
+
+    public void TestToLanguageTag() {
+        final String[][] locale_to_langtag = {
+            {"",            "und"},
+            {"en",          "en"},
+            {"en_US",       "en-US"},
+            {"iw_IL",       "he-IL"},
+            {"sr_Latn_SR",  "sr-Latn-SR"},
+            {"en__POSIX",   "en-posix"},
+            // {"en_POSIX",    "en"}, /* ICU4J locale parser successfully parse en_POSIX as language:en/variant:POSIX */
+            {"und_555",     "und-555"},
+            {"123",         "und"},
+            {"%$#&",        "und"},
+            {"_Latn",       "und-Latn"},
+            {"_DE",         "und-DE"},
+            {"und_FR",      "und-FR"},
+            {"th_TH_TH",    "th-TH"},
+            {"bogus",       "bogus"},
+            {"foooobarrr",  "und"},
+            //{"az_AZ_CYRL",  "az-cyrl-az"}, /* ICU4J does not have this specia locale mapping */
+            {"aa_BB_CYRL",  "aa-BB"},
+            {"en_US_1234",  "en-US-1234"},
+            {"en_US_VARIANTA_VARIANTB", "en-US-varianta-variantb"},
+            {"en_US_VARIANTB_VARIANTA", "en-US-varianta-variantb"},
+            {"ja__9876_5432",   "ja-5432-9876"},
+            {"zh_Hant__VAR",    "zh-Hant"},
+            {"es__BADVARIANT_GOODVAR",  "es-goodvar"},
+            {"en@calendar=gregorian",   "en-u-ca-gregory"},
+            {"de@collation=phonebook;calendar=gregorian",   "de-u-ca-gregory-co-phonebk"},
+            {"th@numbers=thai;z=extz;x=priv-use;a=exta",   "th-a-exta-u-nu-thai-z-extz-x-priv-use"},
+            {"en@timezone=America/New_York;calendar=japanese",    "en-u-ca-japanese-tz-usnyc"},
+            {"en@x=x-y-z;a=a-b-c",  "en-x-x-y-z"},
+            {"it@collation=badcollationtype;colStrength=identical;cu=usd-eur", "it-u-ks-identic"},
+        };
+
+        for (int i = 0; i < locale_to_langtag.length; i++) {
+            ULocale loc = new ULocale(locale_to_langtag[i][0]);
+            String langtag = loc.toLanguageTag();
+            if (!langtag.equals(locale_to_langtag[i][1])) {
+                errln("FAIL: toLanguageTag returned language tag [" + langtag + "] for locale ["
+                        + loc + "] - expected: [" + locale_to_langtag[i][1] + "]");
+            }
+        }
+    }
+
+    public void TestForLanguageTag() {
+        final Object[][] langtag_to_locale = {
+            {"zh-cmn-CH",           "cmn_CH",               new Integer(9)},
+            {"en",                  "en",                   new Integer(2)},
+            {"en-us",               "en_US",                new Integer(5)},
+            {"und-us",              "_US",                  new Integer(6)},
+            {"und-latn",            "_Latn",                new Integer(8)},
+            {"en-us-posix",         "en_US_POSIX",          new Integer(11)},
+            {"de-de_euro",          "de",                   new Integer(2)},
+            {"kok-in",              "kok_IN",               new Integer(6)},
+            {"123",                 "",                     new Integer(0)},
+            {"en_us",               "",                     new Integer(0)},
+            {"en-latn-x",           "en_Latn",              new Integer(7)},
+            {"art-lojban",          "jbo",                  new Integer(10)},
+            {"zh-hakka",            "hak",                  new Integer(8)},
+            {"zh-cmn-CH",           "cmn_CH",               new Integer(9)},
+            {"xxx-yy",              "xxx_YY",               new Integer(6)},
+            {"fr-234",              "fr_234",               new Integer(6)},
+            {"i-default",           "",                     new Integer(9)},
+            {"i-test",              "",                     new Integer(0)},
+            {"ja-jp-jp",            "ja_JP",                new Integer(5)},
+            {"bogus",               "bogus",                new Integer(5)},
+            {"boguslang",           "",                     new Integer(0)},
+            {"EN-lATN-us",          "en_Latn_US",           new Integer(10)},
+            {"und-variant-1234",    "__1234_VARIANT",       new Integer(16)},
+            {"und-varzero-var1-vartwo", "__VARZERO",        new Integer(11)},
+            {"en-u-ca-gregory",     "en@calendar=gregorian",    new Integer(15)},
+            {"en-U-cu-USD",         "en@currency=usd",      new Integer(11)},
+            {"ar-x-1-2-3",          "ar@x=1-2-3",           new Integer(10)},
+            {"fr-u-nu-latn-cu-eur", "fr@currency=eur;numbers=latn", new Integer(19)},
+            {"de-k-kext-u-co-phonebk-nu-latn",  "de@collation=phonebook;k=kext;numbers=latn",   new Integer(30)},
+            {"ja-u-cu-jpy-ca-jp",   "ja@currency=jpy",      new Integer(/*11*/ 0)}, //TODO: need error index support for invalid LDML extension
+            {"en-us-u-tz-usnyc",    "en_US@timezone=america/new_york",      new Integer(16)},
+//            {"und-a-abc-def",       "und@a=abc-def",        new Integer(13)}, // ICU4C does not allow an locale with keywords, but without base locale
+            {"und-a-abc-def",       "@a=abc-def",        new Integer(13)},
+            {"zh-u-ca-chinese-x-u-ca-chinese",  "zh@calendar=chinese;x=u-ca-chinese",   new Integer(30)},
+        };
+
+        for (int i = 0; i < langtag_to_locale.length; i++) {
+            String tag = (String)langtag_to_locale[i][0];
+            ULocale expected = new ULocale((String)langtag_to_locale[i][1]);
+            ULocale loc = ULocale.forLanguageTag(tag);
+
+            if (!loc.equals(expected)) {
+                errln("FAIL: forLanguageTag returned locale [" + loc + "] for language tag [" + tag
+                        + "] - expected: [" + expected + "]");
+            }
+        }
+
+        // Use locale builder to check the parsed length
+        for (int i = 0; i < langtag_to_locale.length; i++) {
+            String tag = (String)langtag_to_locale[i][0];
+            ULocale expected = new ULocale((String)langtag_to_locale[i][1]);
+            int inLen = tag.length();
+            int validLen = ((Integer)langtag_to_locale[i][2]).intValue();
+
+            try {
+                Builder bld = new Builder();
+                bld.setLanguageTag(tag);
+                ULocale loc = bld.create();
+
+                if (!loc.equals(expected)) {
+                    errln("FAIL: forLanguageTag returned locale [" + loc + "] for language tag [" + tag
+                            + "] - expected: [" + expected + "]");
+                }
+                if (inLen != validLen) {
+                    errln("FAIL: Builder.setLanguageTag should throw an exception for input tag [" + tag + "]");
+                }
+            } catch (IllformedLocaleException ifle) {
+                int errorIdx = ifle.getErrorIndex();
+                int expectedErrIdx = (validLen == 0) ? 0 : validLen + 1;
+                if (errorIdx != expectedErrIdx) {
+                    errln("FAIL: Builder.setLanguageTag returned error index " + errorIdx
+                            + " for input language tag [" + tag + "] expected: " + expectedErrIdx);
+                }
+            }
+        }
+    }
+    
+    /*
+     * Test that if you use any locale without keyword that you will get a NULL
+     * string returned and not throw and exception.
+     */
+    public void Test4735()
+    {
+        try {
+            new ULocale("und").getDisplayKeywordValue("calendar",ULocale.GERMAN);
+            new ULocale("en").getDisplayKeywordValue("calendar",ULocale.GERMAN);
+        } catch (Exception e) {
+            errln("Unexpected exception: " + e.getMessage());
+        }  
+    }
+
+}
diff --git a/main/tests/core/src/com/ibm/icu/dev/test/util/UnicodePropertySource.java b/main/tests/core/src/com/ibm/icu/dev/test/util/UnicodePropertySource.java
new file mode 100644
index 0000000..2b4f0cc
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/util/UtilityTest.java b/main/tests/core/src/com/ibm/icu/dev/test/util/UtilityTest.java
new file mode 100644
index 0000000..9d06864
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/util/UtilityTest.java
@@ -0,0 +1,230 @@
+/*
+**********************************************************************
+* Copyright (c) 2003-2009, 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};
+
+        java.nio.ByteBuffer buffer = java.nio.ByteBuffer.wrap(ba);
+        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/main/tests/core/src/com/ibm/icu/dev/test/util/VariableReplacer.java b/main/tests/core/src/com/ibm/icu/dev/test/util/VariableReplacer.java
new file mode 100644
index 0000000..a3c2558
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/util/VersionInfoTest.java b/main/tests/core/src/com/ibm/icu/dev/test/util/VersionInfoTest.java
new file mode 100644
index 0000000..7a30723
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/util/VersionInfoTest.java
@@ -0,0 +1,345 @@
+/*
+*******************************************************************************
+* Copyright (C) 1996-2009, 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() {
+        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_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]);
+            }
+        }
+    }
+    // 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/main/tests/core/src/com/ibm/icu/dev/test/util/XEquivalenceClass.java b/main/tests/core/src/com/ibm/icu/dev/test/util/XEquivalenceClass.java
new file mode 100644
index 0000000..c0abef0
--- /dev/null
+++ b/main/tests/core/src/com/ibm/icu/dev/test/util/XEquivalenceClass.java
@@ -0,0 +1,337 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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;
+
+import com.ibm.icu.text.Transform;
+
+public class XEquivalenceClass<T,R> implements Iterable<T> {
+    private static final String ARROW = "\u2192";
+
+    public SetMaker<T> getSetMaker() {
+        return setMaker;
+    }
+
+    // quick test
+    static public void main(String[] args) {
+        XEquivalenceClass<String, Integer> foo1 = new XEquivalenceClass<String, Integer>(1);
+        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 (String item : foo1.getExplicitItems()) {
+                System.out.println("\t" + item  + ";\t" + foo1.getSample(item) + ";\t" + foo1.getEquivalences(item));
+                List<Linkage<String, Integer>> reasons = foo1.getReasons(item, foo1.getSample(item));
+                if (reasons != null) {
+                    System.out.println("\t\t" + XEquivalenceClass.toString(reasons, null));
+                }
+            }
+        }
+    }
+
+    private Map<T,Set<T>> toPartitionSet = new HashMap();
+    private Map<T,Map<T,Set<R>>> obj_obj_reasons = new HashMap();
+    private R defaultReason;
+    private SetMaker setMaker;
+    
+    public interface SetMaker<T> {
+        Set<T> make();
+    }
+
+    /**
+     * empty, as if just created
+     */
+    public XEquivalenceClass clear(R defaultReasonArg) {
+        toPartitionSet.clear();
+        obj_obj_reasons.clear();
+        this.defaultReason = defaultReasonArg;
+        return this;
+    }
+
+    /**
+     * Create class
+     *
+     */
+    public XEquivalenceClass() {
+    }
+
+    /**
+     * Create class with comparator, and default reason.
+     *
+     */
+    public XEquivalenceClass(R defaultReason) {
+        this.defaultReason = defaultReason;
+    }
+    
+    /**
+     * Create class with comparator, and default reason.
+     *
+     */
+    public XEquivalenceClass(R defaultReason, SetMaker<T> setMaker) {
+        this.defaultReason = defaultReason;
+        this.setMaker = setMaker;
+    }
+
+    /**
+     * Add two equivalent items, with NO_REASON for the reason.
+     */
+    public XEquivalenceClass add(T a, T b) {
+        return add(a,b,null);
+    }
+
+    /**
+     * Add two equivalent items, with NO_REASON for the reason.
+     */
+    public XEquivalenceClass add(T a, T b, R reason) {
+        return add(a,b,reason, reason);
+    }
+
+    /**
+     * Add two equivalent items, plus a reason. The reason is only used for getReasons
+     */
+    public XEquivalenceClass add(T a, T b, R reasonAB, R reasonBA) {
+        if (a.equals(b)) return this;
+        if (reasonAB == null) reasonAB = defaultReason;
+        if (reasonBA == null) reasonBA = defaultReason;
+        addReason(a,b,reasonAB);
+        addReason(b,a,reasonBA);
+        Set<T>aPartitionSet = toPartitionSet.get(a);
+        Set<T>bPartitionSet = 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 (T item : bPartitionSet) {
+                toPartitionSet.put(item, aPartitionSet);
+            }
+        }
+        return this;
+    }
+
+    /**
+     * Add all the information from the other class
+     *
+     */
+    public XEquivalenceClass<T,R> addAll(XEquivalenceClass<T,R> other) {
+        // For now, does the simple, not optimized version
+        for (T a : other.obj_obj_reasons.keySet()) {
+            Map<T,Set<R>> obj_reasons = other.obj_obj_reasons.get(a);
+            for (T b : obj_reasons.keySet()) {
+                Set<R> reasons = obj_reasons.get(b);
+                for (R reason: reasons) {
+                    add(a, b, reason);
+                }
+            }
+        }
+        return this;
+    }
+
+    /**
+     * 
+     */
+    private void addReason(T a, T b, R reason) {
+        Map<T,Set<R>> obj_reasons = obj_obj_reasons.get(a);
+        if (obj_reasons == null) obj_obj_reasons.put(a, obj_reasons = new HashMap());
+        Set<R> reasons = 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<T> getExplicitItems() {
+        return Collections.unmodifiableSet(toPartitionSet.keySet());
+    }
+
+    /**
+     * Returns an unmodifiable set of all the equivalent objects
+     *
+     */
+    public Set<T>getEquivalences(T a) {
+        Set<T> aPartitionSet = toPartitionSet.get(a);
+        if (aPartitionSet == null) { // manufacture an equivalence
+            aPartitionSet = new HashSet<T>();
+            aPartitionSet.add(a); 
+        }
+        return Collections.unmodifiableSet(aPartitionSet);
+    }
+    
+    public boolean hasEquivalences(T a) {
+        return toPartitionSet.get(a) != null;
+    }
+
+    public Set<Set<T>> getEquivalenceSets() {
+        Set<Set<T>> result = new HashSet<Set<T>>();
+        for (T item : toPartitionSet.keySet()) {
+            Set<T> partition = 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(T a, T b) {
+        if (a.equals(b)) return true;
+        Set<T>aPartitionSet = toPartitionSet.get(a);
+        if (aPartitionSet == null) return false;
+        return aPartitionSet.contains(b);
+    }
+
+    /**
+     * Gets a sample object in the equivalence set for a. 
+     *
+     */
+    public T getSample(T a) {
+        Set<T> aPartitionSet = toPartitionSet.get(a);
+        if (aPartitionSet == null) return a; // singleton
+        return aPartitionSet.iterator().next();
+    }
+
+    public interface Filter<T> {
+        boolean matches(T o);
+    }
+
+    public T getSample(T a, Filter<T> f) {
+        Set<T> aPartitionSet = toPartitionSet.get(a);
+        if (aPartitionSet == null) return a; // singleton
+        for (T obj : aPartitionSet) {
+            if (f.matches(obj)) return obj;
+        }
+        return a;
+    }
+
+    /**
+     * gets the set of all the samples, one from each equivalence class. 
+     *
+     */
+    public Set<T> getSamples() {
+        Set<T> seenAlready = new HashSet();
+        Set<T> result = new HashSet();
+        for (T item : toPartitionSet.keySet()) {
+            if (seenAlready.contains(item)) continue;
+            Set<T> partition = toPartitionSet.get(item);
+            result.add(partition.iterator().next());
+            seenAlready.addAll(partition);
+        }
+        return result;
+    }
+
+    public Iterator<T> iterator() {
+        return getSamples().iterator();
+    }
+    
+    public static class Linkage<T,R> {
+        /**
+         * 
+         */
+        public Set<R> reasons;
+        public T result;
+        /**
+         * @param reasons
+         * @param item
+         */
+        public Linkage(Set<R> reasons, T result) {
+            this.reasons = reasons;
+            this.result = result;
+        }
+        public String toString() {
+            return reasons + (result == null ? "" : ARROW + result);
+        }
+    }
+
+    public static <T,R> String toString(List<Linkage<T,R>> others, Transform<Linkage<T,R>,String> itemTransform) {
+        StringBuffer result = new StringBuffer();
+        for (Linkage<T,R> item : others) {
+            result.append(itemTransform == null ? item.toString() : itemTransform.transform(item));
+        }
+        return result.toString();
+    }
+
+    /**
+     * Returns a list of linkages, where each set of reasons to go from one obj to the next. The list does not include a and b themselves.
+     * The last linkage has a null result.<br>
+     * Returns null if there is no connection.
+     */
+    public List<Linkage<T,R>> getReasons(T a, T b) {
+        // use dumb algorithm for getting shortest path
+        // don't bother with optimization
+        Set<T> aPartitionSet = toPartitionSet.get(a);
+        Set<T> bPartitionSet = toPartitionSet.get(b);
+
+        // see if they connect
+        if (aPartitionSet == null || bPartitionSet == null || aPartitionSet != bPartitionSet || a.equals(b)) return null;
+
+        ArrayList<Linkage<T,R>> list = new ArrayList<Linkage<T,R>>();
+        list.add(new Linkage(null, a));
+        ArrayList<ArrayList<Linkage<T,R>>> lists = new ArrayList<ArrayList<Linkage<T,R>>>();
+        lists.add(list);
+
+        // this will contain the results
+        Set<T> sawLastTime = new HashSet<T>();
+        sawLastTime.add(a);
+
+        // each time, we extend each lists by one (adding multiple other lists)
+        while (true) { // foundLists.size() == 0
+            ArrayList extendedList = new ArrayList();
+            Set<T>sawThisTime = new HashSet();
+            for (ArrayList<Linkage<T,R>> lista : lists) {
+                Linkage<T,R> last = lista.get(lista.size()-1);
+                Map<T,Set<R>> obj_reasons = obj_obj_reasons.get(last.result);
+                for (T result : obj_reasons.keySet()) {
+                    if (sawLastTime.contains(result)) {
+                        continue; // skip since we have shorter
+                    }
+                    sawThisTime.add(result);
+                    Set<R> reasons = obj_reasons.get(result);
+                    ArrayList<Linkage<T,R>> lista2 = (ArrayList<Linkage<T,R>>) lista.clone();
+                    lista2.add(new Linkage(reasons,result));
+                    extendedList.add(lista2);
+                    if (result.equals(b)) {
+                        // remove first and last
+                        ArrayList<Linkage<T,R>> found = (ArrayList<Linkage<T,R>>) lista2.clone();
+                        found.remove(0);
+                        found.get(found.size()-1).result = null;
+                        return 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/main/tests/core/src/com/ibm/icu/dev/test/util/XEquivalenceMap.java b/main/tests/core/src/com/ibm/icu/dev/test/util/XEquivalenceMap.java
new file mode 100644
index 0000000..3f67629
--- /dev/null
+++ b/main/tests/core/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/main/tests/core/src/com/ibm/icu/dev/test/util/manifest.cldrutil.stub b/main/tests/core/src/com/ibm/icu/dev/test/util/manifest.cldrutil.stub
new file mode 100644
index 0000000..23e7d48
--- /dev/null
+++ b/main/tests/core/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/main/tests/framework/.classpath b/main/tests/framework/.classpath
new file mode 100644
index 0000000..b0d608f
--- /dev/null
+++ b/main/tests/framework/.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-core"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="output" path="out/bin"/>
+</classpath>
diff --git a/main/tests/framework/.project b/main/tests/framework/.project
new file mode 100644
index 0000000..0f7176c
--- /dev/null
+++ b/main/tests/framework/.project
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>icu4j-test-framework</name>
+	<comment></comment>
+	<projects>
+		<project>icu4j-core</project>
+		<project>icu4j-shared</project>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/main/tests/framework/.settings/org.eclipse.jdt.core.prefs b/main/tests/framework/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..66bb2f7
--- /dev/null
+++ b/main/tests/framework/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,326 @@
+#Tue Jun 09 16:58:01 EDT 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+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=warning
+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=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+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=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+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=ignore
+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.redundantSuperinterface=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.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+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.unusedParameterIncludeDocCommentReference=enabled
+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.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
+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=120
+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_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not 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=120
+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/main/tests/framework/.settings/org.eclipse.jdt.ui.prefs b/main/tests/framework/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..496aa3b
--- /dev/null
+++ b/main/tests/framework/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,10 @@
+#Wed Jun 17 11:10:38 EDT 2009
+eclipse.preferences.version=1
+formatter_profile=_ICU4J Standard
+formatter_settings_version=11
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+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/main/tests/framework/build.properties b/main/tests/framework/build.properties
new file mode 100644
index 0000000..3dc6ef5
--- /dev/null
+++ b/main/tests/framework/build.properties
@@ -0,0 +1,5 @@
+#*******************************************************************************
+#* Copyright (C) 2009, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+shared.dir = ../../shared
diff --git a/main/tests/framework/build.xml b/main/tests/framework/build.xml
new file mode 100644
index 0000000..0b92cda
--- /dev/null
+++ b/main/tests/framework/build.xml
@@ -0,0 +1,29 @@
+<!--
+*******************************************************************************
+* Copyright (C) 2009, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+-->
+<project name="test-framework" default="build" basedir=".">
+    <property file="build-local.properties"/>
+    <property file="build.properties"/>
+    <import file="${shared.dir}/build/common-targets.xml"/>
+
+    <path id="javac.classpathref">
+        <path refid="javac.classpathref.${ant.project.name}"/>
+    </path>
+    <property name="jar.file" value="${icu4j.test-framework.jar}"/>
+
+    <target name="build" depends="compile, copy, jar" description="Build the project"/>
+
+    <target name="build-all" depends="@build-all" description="Build the project including all dependencies"/>
+
+    <target name="clean" depends="@clean" description="Clean up the build outputs"/>
+
+    <target name="compile" depends="@compile" description="Compile java source files"/>
+
+    <target name="copy" depends="@copy" description="Copy non-java runtime files to the project's binary directory"/>
+
+    <target name="jar" depends="compile, copy, @jar" description="Create the project's jar file"/>
+
+</project>
\ No newline at end of file
diff --git a/main/tests/framework/manifest.stub b/main/tests/framework/manifest.stub
new file mode 100644
index 0000000..66c4fb7
--- /dev/null
+++ b/main/tests/framework/manifest.stub
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+
+Name: com/ibm/icu/dev/test
+Specification-Title: ICU for Java Test Framework
+Specification-Version: @SPECVERSION@
+Specification-Vendor: ICU
+Implementation-Title: ICU for Java Test Framework
+Implementation-Version: @IMPLVERSION@
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: @COPYRIGHT@
\ No newline at end of file
diff --git a/main/tests/framework/src/com/ibm/icu/dev/test/AbstractTestLog.java b/main/tests/framework/src/com/ibm/icu/dev/test/AbstractTestLog.java
new file mode 100644
index 0000000..c33c546
--- /dev/null
+++ b/main/tests/framework/src/com/ibm/icu/dev/test/AbstractTestLog.java
@@ -0,0 +1,107 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2003-2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.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/main/tests/framework/src/com/ibm/icu/dev/test/ModuleTest.java b/main/tests/framework/src/com/ibm/icu/dev/test/ModuleTest.java
new file mode 100644
index 0000000..684df98
--- /dev/null
+++ b/main/tests/framework/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/main/tests/framework/src/com/ibm/icu/dev/test/ResourceModule.java b/main/tests/framework/src/com/ibm/icu/dev/test/ResourceModule.java
new file mode 100644
index 0000000..7eb41c8
--- /dev/null
+++ b/main/tests/framework/src/com/ibm/icu/dev/test/ResourceModule.java
@@ -0,0 +1,404 @@
+/*
+ **********************************************************************
+ * Copyright (c) 2006-2009, 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) {
+                throw new RuntimeException(e.getMessage(),e);
+            }            
+        }
+        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
+                throw new RuntimeException(e.getMessage(),e);
+            }
+        }
+
+        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 {
+            throw new DataModuleFormatError(new UResourceTypeMismatchException("Actual type " + t.getType() + " != expected types " + expResTypes + "."));
+        }
+    }
+    
+    /**
+     * 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){
+            throw new DataModuleFormatError(e);
+        }
+    }
+    
+    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/main/tests/framework/src/com/ibm/icu/dev/test/TestAll.java b/main/tests/framework/src/com/ibm/icu/dev/test/TestAll.java
new file mode 100644
index 0000000..2b2e318
--- /dev/null
+++ b/main/tests/framework/src/com/ibm/icu/dev/test/TestAll.java
@@ -0,0 +1,32 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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.TestAllCore",
+                  "com.ibm.icu.dev.test.TestAllCollate",
+                  "com.ibm.icu.dev.test.TestAllTranslit",
+                  "com.ibm.icu.dev.test.charset.TestAll",
+              },
+              "All tests in ICU");
+    }
+
+    public static final String CLASS_TARGET_NAME  = "ICU";
+}
diff --git a/main/tests/framework/src/com/ibm/icu/dev/test/TestBoilerplate.java b/main/tests/framework/src/com/ibm/icu/dev/test/TestBoilerplate.java
new file mode 100644
index 0000000..abc8126
--- /dev/null
+++ b/main/tests/framework/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/main/tests/framework/src/com/ibm/icu/dev/test/TestDataModule.java b/main/tests/framework/src/com/ibm/icu/dev/test/TestDataModule.java
new file mode 100644
index 0000000..2900864
--- /dev/null
+++ b/main/tests/framework/src/com/ibm/icu/dev/test/TestDataModule.java
@@ -0,0 +1,107 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2009, 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);
+        }
+        public DataModuleFormatError(String msg, Throwable cause){
+            super(msg, cause);
+        }
+        public DataModuleFormatError(Throwable cause) {
+            super(cause);
+        }
+    }
+    
+    /**
+     * 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/main/tests/framework/src/com/ibm/icu/dev/test/TestFmwk.java b/main/tests/framework/src/com/ibm/icu/dev/test/TestFmwk.java
new file mode 100644
index 0000000..6520929
--- /dev/null
+++ b/main/tests/framework/src/com/ibm/icu/dev/test/TestFmwk.java
@@ -0,0 +1,1856 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+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.text.NumberFormat;
+import java.text.DecimalFormat;
+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;
+
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.util.TimeZone;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * 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){
+        Throwable ex = e.getCause();
+        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 only for tests exceeding 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 = 0;
+        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) {
+                args = arglist.split("\\s");
+            }
+            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;
+            String fmt = "#,##0.000s";
+            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;
+                            if (val <= 10) {
+                                fmt = "#,##0.000s";
+                            } else if (val <= 100) {
+                                fmt = "#,##0.00s";
+                            } else if (val <= 1000) {
+                                fmt = "#,##0.0s";
+                            }
+                        } 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;
+                }
+            }
+
+            params.tformat = new DecimalFormat(fmt);
+
+            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);
+    }
+
+    public boolean handleAssert(boolean result, String message,
+            Object expected, Object 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/main/tests/framework/src/com/ibm/icu/dev/test/TestLog.java b/main/tests/framework/src/com/ibm/icu/dev/test/TestLog.java
new file mode 100644
index 0000000..d152c49
--- /dev/null
+++ b/main/tests/framework/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/main/tests/framework/src/com/ibm/icu/dev/test/TestLogWriter.java b/main/tests/framework/src/com/ibm/icu/dev/test/TestLogWriter.java
new file mode 100644
index 0000000..e2a3095
--- /dev/null
+++ b/main/tests/framework/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/main/tests/framework/src/com/ibm/icu/dev/test/TestUtil.java b/main/tests/framework/src/com/ibm/icu/dev/test/TestUtil.java
new file mode 100644
index 0000000..d9e7248
--- /dev/null
+++ b/main/tests/framework/src/com/ibm/icu/dev/test/TestUtil.java
@@ -0,0 +1,211 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2001-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+public final class TestUtil {
+    /**
+     * Path to test data in icu4jtest.jar
+     */
+    public static final String DATA_PATH = "/com/ibm/icu/dev/data/";
+
+    /**
+     * 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 = TestUtil.class.getResourceAsStream(DATA_PATH + name);
+        } catch (Throwable t) {
+            IOException ex =
+                new IOException("data resource '" + name + "' not found");
+            ex.initCause(t);
+            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/main/tests/framework/src/com/ibm/icu/dev/test/UTF16Util.java b/main/tests/framework/src/com/ibm/icu/dev/test/UTF16Util.java
new file mode 100644
index 0000000..9da512c
--- /dev/null
+++ b/main/tests/framework/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/main/tests/framework/src/com/ibm/icu/dev/test/manifest.test.stub b/main/tests/framework/src/com/ibm/icu/dev/test/manifest.test.stub
new file mode 100644
index 0000000..e1ad499
--- /dev/null
+++ b/main/tests/framework/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/main/tests/framework/src/com/ibm/icu/dev/test/package.html b/main/tests/framework/src/com/ibm/icu/dev/test/package.html
new file mode 100644
index 0000000..61370bf
--- /dev/null
+++ b/main/tests/framework/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/main/tests/framework/src/com/ibm/icu/dev/test/sample/ModuleTestSample.java b/main/tests/framework/src/com/ibm/icu/dev/test/sample/ModuleTestSample.java
new file mode 100644
index 0000000..5a9604e
--- /dev/null
+++ b/main/tests/framework/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/main/tests/framework/src/com/ibm/icu/dev/test/sample/ModuleTestSampleData.java b/main/tests/framework/src/com/ibm/icu/dev/test/sample/ModuleTestSampleData.java
new file mode 100644
index 0000000..0ed8ad9
--- /dev/null
+++ b/main/tests/framework/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/main/tests/framework/test-framework-build.launch b/main/tests/framework/test-framework-build.launch
new file mode 100644
index 0000000..6882137
--- /dev/null
+++ b/main/tests/framework/test-framework-build.launch
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j-test-framework/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j-test-framework"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.running" value="true"/>
+<mapEntry key="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-test-framework/build.xml}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/main/tests/localespi/.classpath b/main/tests/localespi/.classpath
new file mode 100644
index 0000000..e60d45b
--- /dev/null
+++ b/main/tests/localespi/.classpath
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry excluding="**/.svn/" kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-core"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-localespi"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-test-framework"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-collate"/>
+	<classpathentry kind="output" path="out/bin"/>
+</classpath>
diff --git a/main/tests/localespi/.project b/main/tests/localespi/.project
new file mode 100644
index 0000000..56018ae
--- /dev/null
+++ b/main/tests/localespi/.project
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>icu4j-localespi-tests</name>
+	<comment></comment>
+	<projects>
+		<project>icu4j-collate</project>
+		<project>icu4j-core</project>
+		<project>icu4j-shared</project>
+		<project>icu4j-test-framework</project>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/main/tests/localespi/.settings/org.eclipse.jdt.core.prefs b/main/tests/localespi/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..511483c
--- /dev/null
+++ b/main/tests/localespi/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,330 @@
+#Tue Sep 01 16:09:56 EDT 2009
+eclipse.preferences.version=1
+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.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+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=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+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=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+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=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=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=warning
+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.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+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.unusedParameterIncludeDocCommentReference=enabled
+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.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+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=120
+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_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not 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=120
+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/main/tests/localespi/.settings/org.eclipse.jdt.ui.prefs b/main/tests/localespi/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..5c8bf04
--- /dev/null
+++ b/main/tests/localespi/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,10 @@
+#Wed Jun 17 11:10:29 EDT 2009
+eclipse.preferences.version=1
+formatter_profile=_ICU4J Standard
+formatter_settings_version=11
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+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/main/tests/localespi/build.properties b/main/tests/localespi/build.properties
new file mode 100644
index 0000000..37e2b8e
--- /dev/null
+++ b/main/tests/localespi/build.properties
@@ -0,0 +1,8 @@
+#*******************************************************************************
+#* Copyright (C) 2009, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+shared.dir = ../../shared
+
+javac.source = 1.6
+javac.target = 1.6
diff --git a/main/tests/localespi/build.xml b/main/tests/localespi/build.xml
new file mode 100644
index 0000000..cb010ef
--- /dev/null
+++ b/main/tests/localespi/build.xml
@@ -0,0 +1,29 @@
+<!--
+*******************************************************************************
+* Copyright (C) 2009, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+-->
+<project name="localespi-tests" default="build" basedir=".">
+    <property file="build-local.properties"/>
+    <property file="build.properties"/>
+    <import file="${shared.dir}/build/common-targets.xml"/>
+
+    <path id="javac.classpathref">
+        <path refid="javac.classpathref.${ant.project.name}"/>
+    </path>
+    <property name="jar.file" value="${icu4j.localespi-tests.jar}"/>
+
+    <target name="build" depends="compile, copy, jar" description="Build the project"/>
+
+    <target name="build-all" depends="@build-all" description="Build the project including all dependencies"/>
+
+    <target name="clean" depends="@clean" description="Clean up the build outputs"/>
+
+    <target name="compile" depends="@compile" description="Compile java source files"/>
+
+    <target name="copy" depends="@copy" description="Copy non-java runtime files to the project's binary directory"/>
+
+    <target name="jar" depends="compile, copy, @jar" description="Create the project's jar file"/>
+
+</project>
\ No newline at end of file
diff --git a/main/tests/localespi/localespi-tests-build.launch b/main/tests/localespi/localespi-tests-build.launch
new file mode 100644
index 0000000..fe405e2
--- /dev/null
+++ b/main/tests/localespi/localespi-tests-build.launch
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j-localespi-tests/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j-localespi-tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.running" value="true"/>
+<mapEntry key="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-localespi-tests/build.xml}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/main/tests/localespi/manifest.stub b/main/tests/localespi/manifest.stub
new file mode 100644
index 0000000..ec72e2b
--- /dev/null
+++ b/main/tests/localespi/manifest.stub
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+
+Name: com/ibm/icu/dev/test
+Specification-Title: ICU for Java Locale Service Provider Tests
+Specification-Version: @SPECVERSION@
+Specification-Vendor: ICU
+Implementation-Title: ICU for Java Locale Service Provider Tests
+Implementation-Version: @IMPLVERSION@
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: @COPYRIGHT@
diff --git a/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/BreakIteratorTest.java b/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/BreakIteratorTest.java
new file mode 100644
index 0000000..afbd308
--- /dev/null
+++ b/main/tests/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/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/CollatorTest.java b/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/CollatorTest.java
new file mode 100644
index 0000000..9ef9457
--- /dev/null
+++ b/main/tests/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/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/CurrencyNameTest.java b/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/CurrencyNameTest.java
new file mode 100644
index 0000000..dd62fa7
--- /dev/null
+++ b/main/tests/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/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatSymbolsTest.java b/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatSymbolsTest.java
new file mode 100644
index 0000000..d9357dd
--- /dev/null
+++ b/main/tests/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/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatTest.java b/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/DateFormatTest.java
new file mode 100644
index 0000000..8bef67f
--- /dev/null
+++ b/main/tests/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/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/DecimalFormatSymbolsTest.java b/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/DecimalFormatSymbolsTest.java
new file mode 100644
index 0000000..cbb51c3
--- /dev/null
+++ b/main/tests/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/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/LocaleNameTest.java b/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/LocaleNameTest.java
new file mode 100644
index 0000000..7142439
--- /dev/null
+++ b/main/tests/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/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/NumberFormatTest.java b/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/NumberFormatTest.java
new file mode 100644
index 0000000..b881182
--- /dev/null
+++ b/main/tests/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/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/TestAll.java b/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/TestAll.java
new file mode 100644
index 0000000..d3775fa
--- /dev/null
+++ b/main/tests/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/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/TestUtil.java b/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/TestUtil.java
new file mode 100644
index 0000000..9e126fe
--- /dev/null
+++ b/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/TestUtil.java
@@ -0,0 +1,102 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008-2009, 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);
+    }
+
+    private static final boolean SUNJRE;
+    private static final boolean IBMJRE;
+
+    static {
+        String javaVendor = System.getProperty("java.vendor");
+        if (javaVendor != null) {
+            if (javaVendor.indexOf("Sun") >= 0) {
+                SUNJRE = true;
+                IBMJRE = false;
+            } else if (javaVendor.indexOf("IBM") >= 0) {
+                SUNJRE = false;
+                IBMJRE = true;
+            } else {
+                SUNJRE = false;
+                IBMJRE = false;
+            }
+        } else {
+            SUNJRE = false;
+            IBMJRE = false;
+        }
+    }
+
+    public static boolean isSUNJRE() {
+        return SUNJRE;
+    }
+    public static boolean isIBMJRE() {
+        return IBMJRE;
+    }
+
+    /*
+     * 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.
+     */
+    public static boolean isProblematicIBMLocale(Locale loc) {
+        if (!isIBMJRE()) {
+            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/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/TimeZoneNameTest.java b/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/TimeZoneNameTest.java
new file mode 100644
index 0000000..c3c7ff2
--- /dev/null
+++ b/main/tests/localespi/src/com/ibm/icu/dev/test/localespi/TimeZoneNameTest.java
@@ -0,0 +1,123 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2008-2009, 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() {
+        Locale[] locales = Locale.getAvailableLocales();
+        String[] tzids = TimeZone.getAvailableIDs();
+
+        for (Locale loc : locales) {
+            boolean warningOnly = false;
+            if (TestUtil.isProblematicIBMLocale(loc)) {
+                warningOnly = true;
+            }
+            else if ((TestUtil.isSUNJRE() || TestUtil.isIBMJRE()) && loc.toString().startsWith("eu")) {
+                warningOnly = true;
+            }
+
+            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, warningOnly);
+                checkDisplayNamePair(TimeZone.LONG, tz, tzIcu, loc, warningOnly);
+            }
+        }
+    }
+
+    private void checkDisplayNamePair(int style, TimeZone tz, com.ibm.icu.util.TimeZone icuTz, Locale loc, boolean warnOnly) {
+        /* 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, warnOnly);
+            checkDisplayName(true, style, tz, loc, icuDstName, warnOnly);
+        }
+    }
+
+    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, boolean warnOnly) {
+        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)) {
+                if (warnOnly) {
+                    logln("WARNING: TimeZone name by ICU is " + icuname + ", but got " + name
+                            + " for time zone " + tz.getID() + " in locale " + loc
+                            + " (daylight=" + daylight + ", style=" + styleStr + ")");
+                    
+                } else {
+                    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)) {
+                if (warnOnly) {
+                    logln("WARNING: TimeZone name by ICU is " + icuname + ", but got " + name
+                            + " for time zone " + tz.getID() + " in locale " + icuLoc
+                            + " (daylight=" + daylight + ", style=" + styleStr + ")");
+                } else {
+                    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/main/tests/translit/.classpath b/main/tests/translit/.classpath
new file mode 100644
index 0000000..15431de
--- /dev/null
+++ b/main/tests/translit/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry excluding="**/.svn/" kind="src" path="src"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-translit"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-core"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-test-framework"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="output" path="out/bin"/>
+</classpath>
diff --git a/main/tests/translit/.externalToolBuilders/copy-translit-test-data.launch b/main/tests/translit/.externalToolBuilders/copy-translit-test-data.launch
new file mode 100644
index 0000000..34a684f
--- /dev/null
+++ b/main/tests/translit/.externalToolBuilders/copy-translit-test-data.launch
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_AFTER_CLEAN_TARGETS" value="copy-translit-test-data,"/>
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_MANUAL_TARGETS" value="copy-translit-test-data,"/>
+<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-translit-tests/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-translit-tests"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.running" value="true"/>
+<mapEntry key="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-translit-tests/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"/>
+</launchConfiguration>
diff --git a/main/tests/translit/.project b/main/tests/translit/.project
new file mode 100644
index 0000000..b9d63b5
--- /dev/null
+++ b/main/tests/translit/.project
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>icu4j-translit-tests</name>
+	<comment></comment>
+	<projects>
+		<project>icu4j-translit</project>
+		<project>icu4j-core</project>
+		<project>icu4j-shared</project>
+		<project>icu4j-test-framework</project>
+	</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/copy-translit-test-data.launch</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/main/tests/translit/.settings/org.eclipse.jdt.core.prefs b/main/tests/translit/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..91c4068
--- /dev/null
+++ b/main/tests/translit/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,332 @@
+#Wed Jul 08 12:24:33 EDT 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+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.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=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=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+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=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+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=ignore
+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.redundantSuperinterface=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.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+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.unusedParameterIncludeDocCommentReference=enabled
+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.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
+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=120
+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_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not 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.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+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=120
+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/main/tests/translit/.settings/org.eclipse.jdt.ui.prefs b/main/tests/translit/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..a799eb0
--- /dev/null
+++ b/main/tests/translit/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,10 @@
+#Wed Jul 08 12:22:42 EDT 2009
+eclipse.preferences.version=1
+formatter_profile=_ICU4J Standard
+formatter_settings_version=11
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+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/main/tests/translit/build.properties b/main/tests/translit/build.properties
new file mode 100644
index 0000000..3dc6ef5
--- /dev/null
+++ b/main/tests/translit/build.properties
@@ -0,0 +1,5 @@
+#*******************************************************************************
+#* Copyright (C) 2009, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+shared.dir = ../../shared
diff --git a/main/tests/translit/build.xml b/main/tests/translit/build.xml
new file mode 100644
index 0000000..1546c6c
--- /dev/null
+++ b/main/tests/translit/build.xml
@@ -0,0 +1,36 @@
+<!--
+*******************************************************************************
+* Copyright (C) 2009, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+-->
+<project name="translit-tests" default="build" basedir=".">
+    <property file="build-local.properties"/>
+    <property file="build.properties"/>
+    <import file="${shared.dir}/build/common-targets.xml"/>
+
+    <path id="javac.classpathref">
+        <path refid="javac.classpathref.${ant.project.name}"/>
+    </path>
+    <property name="jar.file" value="${icu4j.translit-tests.jar}"/>
+
+    <target name="build" depends="compile, copy, jar" description="Build the project"/>
+
+    <target name="build-all" depends="@build-all" description="Build the project including all dependencies"/>
+
+    <target name="clean" depends="@clean" description="Clean up the build outputs"/>
+
+    <target name="compile" depends="@compile" description="Compile java source files"/>
+
+    <target name="copy" depends="@copy, copy-translit-test-data" description="Copy non-java runtime files to the project's binary directory"/>
+
+    <target name="jar" depends="compile, copy, @jar" description="Create the project's jar file"/>
+
+    <target name="copy-translit-test-data" description="Extract pre-built ICU collation test data files and copy them to the project's binary directory">
+        <copy todir="${bin.dir}">
+            <fileset dir="${icu4j.translit-tests.dir}/src">
+                <include name="com/ibm/icu/dev/test/translit/langtagRegex.txt"/>
+            </fileset>
+        </copy>
+    </target>
+</project>
diff --git a/main/tests/translit/manifest.stub b/main/tests/translit/manifest.stub
new file mode 100644
index 0000000..d4fdf4d
--- /dev/null
+++ b/main/tests/translit/manifest.stub
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+
+Name: com/ibm/icu/dev/test
+Specification-Title: ICU for Java Transliteration Tests
+Specification-Version: @SPECVERSION@
+Specification-Vendor: ICU
+Implementation-Title: ICU for Java Transliteration Tests
+Implementation-Version: @IMPLVERSION@
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: @COPYRIGHT@
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/TestAllTranslit.java b/main/tests/translit/src/com/ibm/icu/dev/test/TestAllTranslit.java
new file mode 100644
index 0000000..f4467f4
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/TestAllTranslit.java
@@ -0,0 +1,32 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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 TestAllTranslit extends TestGroup {
+
+    public static void main(String[] args) {
+        new TestAllTranslit().run(args);
+    }
+
+    public TestAllTranslit() {
+        super(
+              new String[] {
+                  "com.ibm.icu.dev.test.translit.TestAll",
+                  // funky tests of test code
+                  // "com.ibm.icu.dev.test.util.TestBNF",
+                  // "com.ibm.icu.dev.test.util.TestBagFormatter",
+              },
+              "All tests in ICU translit");
+    }
+
+    public static final String CLASS_TARGET_NAME  = "Translit";
+}
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/translit/AnyScriptTest.java b/main/tests/translit/src/com/ibm/icu/dev/test/translit/AnyScriptTest.java
new file mode 100644
index 0000000..8549e73
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/translit/AnyScriptTest.java
@@ -0,0 +1,150 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, Google, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+
+/**
+ * @author markdavis
+ *
+ */
+public class AnyScriptTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new AnyScriptTest().run(args);
+    }
+    
+    public void TestContext() {
+        Transliterator t = Transliterator.createFromRules("foo", "::[bc]; a{b}d > B;", Transliterator.FORWARD);
+        String sample = "abd abc b";
+        assertEquals("context works", "aBd abc b", t.transform(sample));
+    }
+
+    public void TestScripts(){
+        // get a couple of characters of each script for testing
+        
+        StringBuffer testBuffer = new StringBuffer();
+        for (int script = 0; script < UScript.CODE_LIMIT; ++script) {
+            UnicodeSet test = new UnicodeSet().applyPropertyAlias("script", UScript.getName(script));
+            int count = Math.min(20, test.size());
+            for (int i = 0; i < count; ++i){
+                testBuffer.append(UTF16.valueOf(test.charAt(i)));
+            }
+        }
+        String test = testBuffer.toString();
+        logln("Test line: " + test);
+        
+        int inclusion = getInclusion();
+        boolean testedUnavailableScript = false;
+        
+        for (int script = 0; script < UScript.CODE_LIMIT; ++script) {
+            if (script == UScript.COMMON || script == UScript.INHERITED) {
+                continue;
+            }
+            // if the inclusion rate is not 10, skip all but a small number of items.
+            // Make sure, however, that we test at least one unavailable script
+            if (inclusion < 10 && script != UScript.LATIN
+                    && script != UScript.HAN 
+                    && script != UScript.HIRAGANA
+                    && testedUnavailableScript
+                    ) {
+                continue;
+            }
+            
+            String scriptName = UScript.getName(script);
+            Transliterator t;
+            try {
+                t = Transliterator.getInstance("any-" + scriptName);
+            } catch (Exception e) {
+                testedUnavailableScript = true;
+                logln("Skipping unavailable: " + scriptName);
+                continue; // we don't handle all scripts
+            }
+            logln("Checking: " + scriptName);
+            if (t != null) {
+                t.transform(test); // just verify we don't crash
+            }
+            scriptName = UScript.getShortName(script);
+            t = Transliterator.getInstance("any-" + scriptName);
+            t.transform(test); // just verify we don't crash
+        }
+    }
+    
+    /**
+     * Check to make sure that wide characters are converted when going to narrow scripts.
+     */
+    public void TestForWidth(){
+        Transliterator widen = Transliterator.getInstance("halfwidth-fullwidth");
+        Transliterator narrow = Transliterator.getInstance("fullwidth-halfwidth");
+        UnicodeSet ASCII = new UnicodeSet("[:ascii:]");
+        String lettersAndSpace = "abc def";
+        final String punctOnly = "( )";
+        
+        String wideLettersAndSpace = widen.transform(lettersAndSpace);
+        String widePunctOnly = widen.transform(punctOnly);
+        assertContainsNone("Should be wide", ASCII, wideLettersAndSpace);
+        assertContainsNone("Should be wide", ASCII, widePunctOnly);
+        
+        String back;
+        back = narrow.transform(wideLettersAndSpace);
+        assertEquals("Should be narrow", lettersAndSpace, back);
+        back = narrow.transform(widePunctOnly);
+        assertEquals("Should be narrow", punctOnly, back);
+        
+        Transliterator latin = Transliterator.getInstance("any-Latn");
+        back = latin.transform(wideLettersAndSpace);
+        assertEquals("Should be ascii", lettersAndSpace, back);
+        
+        back = latin.transform(widePunctOnly);
+        assertEquals("Should be ascii", punctOnly, back);
+       
+        Transliterator t2 = Transliterator.getInstance("any-Han");
+        back = t2.transform(widePunctOnly);
+        assertEquals("Should be same", widePunctOnly, back);
+
+
+    }
+    
+    public void TestCommonDigits() {
+        UnicodeSet westernDigitSet = new UnicodeSet("[0-9]");
+        UnicodeSet westernDigitSetAndMarks = new UnicodeSet("[[0-9][:Mn:]]");
+        UnicodeSet arabicDigitSet = new UnicodeSet("[[:Nd:]&[:block=Arabic:]]");
+        Transliterator latin = Transliterator.getInstance("Any-Latn");
+        Transliterator arabic = Transliterator.getInstance("Any-Arabic");
+        String westernDigits = getList(westernDigitSet);
+        String arabicDigits = getList(arabicDigitSet);
+
+        String fromArabic = latin.transform(arabicDigits);
+        assertContainsAll("Any-Latin transforms Arabic digits", westernDigitSetAndMarks, fromArabic);
+        if (false) { // we don't require conversion to Arabic digits
+            String fromLatin = arabic.transform(westernDigits);
+            assertContainsAll("Any-Arabic transforms Western digits", arabicDigitSet, fromLatin);
+        }
+    }
+
+    // might want to add to TestFmwk
+    private void assertContainsAll(String message, UnicodeSet set, String string) {
+        handleAssert(set.containsAll(string), message, set, string, "contains all of", false);
+    }
+
+    private void assertContainsNone(String message, UnicodeSet set, String string) {
+        handleAssert(set.containsNone(string), message, set, string, "contains none of", false);
+    }
+
+    // might want to add to UnicodeSet
+    private String getList(UnicodeSet set) {
+        StringBuffer result = new StringBuffer();
+        for (UnicodeSetIterator it = new UnicodeSetIterator(set); it.next();) {
+            result.append(it.getString());
+        }
+        return result.toString();
+    }
+}
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/translit/CompoundTransliteratorTest.java b/main/tests/translit/src/com/ibm/icu/dev/test/translit/CompoundTransliteratorTest.java
new file mode 100644
index 0000000..0336387
--- /dev/null
+++ b/main/tests/translit/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/main/tests/translit/src/com/ibm/icu/dev/test/translit/ErrorTest.java b/main/tests/translit/src/com/ibm/icu/dev/test/translit/ErrorTest.java
new file mode 100644
index 0000000..65ed819
--- /dev/null
+++ b/main/tests/translit/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/main/tests/translit/src/com/ibm/icu/dev/test/translit/JamoTest.java b/main/tests/translit/src/com/ibm/icu/dev/test/translit/JamoTest.java
new file mode 100644
index 0000000..462f73f
--- /dev/null
+++ b/main/tests/translit/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/main/tests/translit/src/com/ibm/icu/dev/test/translit/PrettyPrinterTest.java b/main/tests/translit/src/com/ibm/icu/dev/test/translit/PrettyPrinterTest.java
new file mode 100644
index 0000000..9c4ae0a
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/translit/PrettyPrinterTest.java
@@ -0,0 +1,38 @@
+/*
+ **********************************************************************
+ * Copyright (c) 2009, Google, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ **********************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+import java.text.Collator;
+import java.util.Locale;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.util.PrettyPrinter;
+import com.ibm.icu.text.UnicodeSet;
+
+public class PrettyPrinterTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new PrettyPrinterTest().run(args);
+    }
+    public static final UnicodeSet TO_QUOTE = new UnicodeSet("[[:z:][:me:][:mn:][:di:][:c:]-[\u0020]]");
+
+    public void TestBasicUnicodeSet() {
+
+        Collator spaceComp = Collator.getInstance(Locale.ENGLISH);
+        spaceComp.setStrength(Collator.PRIMARY);
+        
+        final PrettyPrinter PRETTY_PRINTER = new PrettyPrinter()
+        .setOrdering(Collator.getInstance(Locale.ENGLISH))
+        .setSpaceComparator(spaceComp)
+        .setToQuote(TO_QUOTE);
+
+        UnicodeSet expected = new UnicodeSet("[:L:]");
+        String formatted = PRETTY_PRINTER.format(expected);
+        logln(formatted);
+        UnicodeSet actual = new UnicodeSet(formatted);
+        assertEquals("PrettyPrinter preserves meaning", expected, actual);
+    }
+}
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/translit/RegexUtilitiesTest.java b/main/tests/translit/src/com/ibm/icu/dev/test/translit/RegexUtilitiesTest.java
new file mode 100644
index 0000000..b846fbe
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/translit/RegexUtilitiesTest.java
@@ -0,0 +1,217 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.impl.UnicodeRegex;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UProperty;
+import com.ibm.icu.lang.UProperty.NameChoice;
+import com.ibm.icu.text.Transliterator;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * @author markdavis
+ */
+public class RegexUtilitiesTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new RegexUtilitiesTest().run(args);
+    }
+
+    /**
+     * Check basic construction.
+     */
+    public void TestConstruction() {
+        String[][] tests = {
+                {"a"},
+                {"a[a-z]b"},
+                {"[ba-z]", "[a-z]"},
+                {"q[ba-z]", "q[a-z]"},
+                {"[ba-z]q", "[a-z]q"},
+                {"a\\p{joincontrol}b", "a[\u200C\u200D]b"},
+                {"a\\P{joincontrol}b", "a[^\u200C\u200D]b"},
+                {"a[[:whitespace:]&[:Zl:]]b", "a[\\\u2028]b"},
+                {"a [[:bc=cs:]&[:wspace:]] b", "a [\u00A0\u202F] b"},
+        };
+        for (int i = 0; i < tests.length; ++i) {
+            final String source = tests[i][0];
+            String expected = tests[i].length == 1 ? source : tests[i][1];
+            String actual = UnicodeRegex.fix(source);
+            assertEquals(source, expected, actual);
+        } 
+    }
+
+    Transliterator hex = Transliterator.getInstance("hex");
+
+    /**
+     * Perform an exhaustive test on all Unicode characters to make sure that the UnicodeSet with each
+     * character works.
+     */
+    public void TestCharacters() {
+        UnicodeSet requiresQuote = new UnicodeSet("[\\$\\&\\-\\:\\[\\\\\\]\\^\\{\\}[:pattern_whitespace:]]");
+        boolean skip = getInclusion() < 10;
+        for (int cp = 0; cp < 0x110000; ++cp) {
+            if (cp > 0xFF && skip && (cp % 37 != 0)) {
+                continue;
+            }
+            String cpString = UTF16.valueOf(cp);
+            String s = requiresQuote.contains(cp) ? "\\" + cpString : cpString;
+            String pattern = null;
+            final String rawPattern = "[" + s + s + "]";
+            try {
+                pattern = UnicodeRegex.fix(rawPattern);
+            } catch (Exception e) {
+                errln(e.getMessage());
+                continue;
+            }
+            final String expected = "[" + s + "]";
+            assertEquals("Doubled character works" + hex.transform(s), expected, pattern);
+
+            // verify that we can create a regex pattern and use as expected
+            String shouldNotMatch = UTF16.valueOf((cp + 1) % 0x110000);
+            checkCharPattern(Pattern.compile(pattern), pattern, cpString, shouldNotMatch);
+
+            // verify that the Pattern.compile works
+            checkCharPattern(UnicodeRegex.compile(rawPattern), pattern, cpString, shouldNotMatch);
+        }
+    }
+
+    /**
+     * Check all integer Unicode properties to make sure they work.
+     */
+    public void TestUnicodeProperties() {
+        final boolean skip = getInclusion() < 10;
+        UnicodeSet temp = new UnicodeSet();
+        for (int propNum = UProperty.INT_START; propNum < UProperty.INT_LIMIT; ++propNum) {
+            if (skip && (propNum % 5 != 0)) {
+                continue;
+            }
+            String propName = UCharacter.getPropertyName(propNum, NameChoice.LONG);
+            final int intPropertyMinValue = UCharacter.getIntPropertyMinValue(propNum);
+            int intPropertyMaxValue = UCharacter.getIntPropertyMaxValue(propNum);
+            if (skip) { // only test first if not exhaustive
+                intPropertyMaxValue = intPropertyMinValue;
+            }
+            for (int valueNum = intPropertyMinValue; valueNum <= intPropertyMaxValue; ++valueNum) {
+                // hack for getting property value name
+                String valueName = UCharacter.getPropertyValueName(propNum, valueNum, NameChoice.LONG);
+                if (valueName == null) {
+                    valueName = UCharacter.getPropertyValueName(propNum, valueNum, NameChoice.SHORT);
+                    if (valueName == null) {
+                        valueName = Integer.toString(valueNum);
+                    }
+                }
+                temp.applyIntPropertyValue(propNum, valueNum);
+                if (temp.size() == 0) {
+                    continue;
+                }
+                final String prefix = "a";
+                final String suffix = "b";
+                String shouldMatch = prefix + UTF16.valueOf(temp.charAt(0)) + suffix;
+                temp.complement();
+                String shouldNotMatch = prefix + UTF16.valueOf(temp.charAt(0)) + suffix;
+
+                // posix style pattern
+                String rawPattern = prefix + "[:" + propName + "=" + valueName + ":]" + suffix;
+                String rawNegativePattern = prefix + "[:^" + propName + "=" + valueName + ":]" + suffix;
+                checkCharPattern(UnicodeRegex.compile(rawPattern), rawPattern, shouldMatch, shouldNotMatch);
+                checkCharPattern(UnicodeRegex.compile(rawNegativePattern), rawNegativePattern, shouldNotMatch, shouldMatch);
+
+                // perl style pattern
+                rawPattern = prefix + "\\p{" + propName + "=" + valueName + "}" + suffix;
+                rawNegativePattern = prefix + "\\P{" + propName + "=" + valueName + "}" + suffix;
+                checkCharPattern(UnicodeRegex.compile(rawPattern), rawPattern, shouldMatch, shouldNotMatch);
+                checkCharPattern(UnicodeRegex.compile(rawNegativePattern), rawNegativePattern, shouldNotMatch, shouldMatch);
+            }
+        }
+    }
+
+    public void TestBnf() {
+        UnicodeRegex regex = new UnicodeRegex();
+        final String[][] tests = {
+                {
+                    "c = a wq;\n" +
+                    "a = xyz;\n" +
+                    "b = a a c;\n"
+                },
+                {
+                    "c = a b;\n" +
+                    "a = xyz;\n" +
+                    "b = a a c;\n",
+                    "Exception"
+                },
+                {
+                    "uri = (?: (scheme) \\:)? (host) (?: \\? (query))? (?: \\u0023 (fragment))?;\n" +
+                    "scheme = reserved+;\n" +
+                    "host = // reserved+;\n" +
+                    "query = [\\=reserved]+;\n" +
+                    "fragment = reserved+;\n" +
+                    "reserved = [[:ascii:][:sc=grek:]&[:alphabetic:]];\n",
+                "http://\u03B1\u03B2\u03B3?huh=hi#there"},
+                {
+                    "langtagRegex.txt"
+                }
+        };
+        for (int i = 0; i < tests.length; ++i) {
+            String test = tests[i][0];
+            final boolean expectException = tests[i].length < 2 ? false : tests[i][1].equals("Exception");
+            try {
+                String result;
+                if (test.endsWith(".txt")) {
+                    java.io.InputStream is = RegexUtilitiesTest.class.getResourceAsStream(test);
+                    List lines = UnicodeRegex.appendLines(new ArrayList(), is, "UTF-8");
+                    result = regex.compileBnf(lines);
+                } else {
+                    result = regex.compileBnf(test);
+                }
+                if (expectException) {
+                    errln("Expected exception for " + test);
+                    continue;
+                }
+                result = result.replaceAll("[0-9]+%", ""); // just so we can use the language subtag stuff
+                String resolved = regex.transform(result);
+                logln(resolved);
+                Matcher m = Pattern.compile(resolved, Pattern.COMMENTS).matcher("");
+                String checks = "";
+                for (int j = 1; j < tests[i].length; ++j) {
+                    String check = tests[i][j];
+                    if (!m.reset(check).matches()) {
+                        checks = checks + "Fails " + check + "\n";
+                    } else {
+                        for (int k = 1; k <= m.groupCount(); ++k) {
+                            checks += "(" + m.group(k) + ")";
+                        }
+                        checks += "\n";
+                    }
+                }
+                logln("Result: " + result + "\n" + checks + "\n" + test);
+            } catch (Exception e) {
+                if (!expectException) {
+                    errln(e.getClass().getName() + ": " + e.getMessage());
+                }
+                continue;
+            }
+        }
+    }
+
+    /**
+     * Utility for checking patterns
+     */
+    private void checkCharPattern(Pattern pat, String matchTitle, String shouldMatch, String shouldNotMatch) {
+        Matcher matcher = pat.matcher(shouldMatch);
+        assertTrue(matchTitle + " and " + shouldMatch, matcher.matches());
+        matcher.reset(shouldNotMatch);
+        assertFalse(matchTitle + " and " + shouldNotMatch, matcher.matches());
+    }
+}
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/translit/ReplaceableTest.java b/main/tests/translit/src/com/ibm/icu/dev/test/translit/ReplaceableTest.java
new file mode 100644
index 0000000..6cfebde
--- /dev/null
+++ b/main/tests/translit/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/main/tests/translit/src/com/ibm/icu/dev/test/translit/RoundTripTest.java b/main/tests/translit/src/com/ibm/icu/dev/test/translit/RoundTripTest.java
new file mode 100644
index 0000000..cd4bba5
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/translit/RoundTripTest.java
@@ -0,0 +1,1764 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 2000-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+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;
+
+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.Normalizer;
+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.LocaleData;
+import com.ibm.icu.util.ULocale;
+
+/**
+ * @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);
+        boolean TEST_ALL = "true".equalsIgnoreCase(getProperty("HangulRoundTripAll")); 
+        if (TEST_ALL && getInclusion() == 10) {
+            t.setPairLimit(Integer.MAX_VALUE); // only go to the limit if we have TEST_ALL and getInclusion
+        }
+        t.test("[a-zA-Z]", "[\uAC00-\uD7A4]", "", this, new Legal());
+        showElapsed(start, "TestHangul");
+    }
+
+    /**
+     * This is a shorter version of the test for doubles, that allows us to skip lots of cases, but
+     * does check the ones that should cause problems (if any do).
+     */
+    public void TestHangul2() {
+        Transliterator lh = Transliterator.getInstance("Latin-Hangul");
+        Transliterator hl = lh.getInverse();
+        final UnicodeSet representativeHangul = getRepresentativeHangul();
+        for (UnicodeSetIterator it = new UnicodeSetIterator(representativeHangul); it.next();) {
+            assertRoundTripTransform("Transform", it.getString(), lh, hl);
+        }
+    }
+
+    private void assertRoundTripTransform(String message, String source, Transliterator lh, Transliterator hl) {
+        String to = hl.transform(source);
+        String back = lh.transform(to);
+        if (!source.equals(back)) {
+            String to2 = hl.transform(source.replaceAll("(.)", "$1 ").trim());
+            String to3 = hl.transform(back.replaceAll("(.)", "$1 ").trim());
+            assertEquals(message + " " + source + " [" + to + "/"+ to2 + "/"+ to3 + "]", source, back);
+        }
+    }
+
+    public static UnicodeSet getRepresentativeHangul() {
+        UnicodeSet extraSamples = new UnicodeSet("[\uCE20{\uAD6C\uB514}{\uAD73\uC774}{\uBB34\uB837}{\uBB3C\uC5FF}{\uC544\uAE4C}{\uC544\uB530}{\uC544\uBE60}{\uC544\uC2F8}{\uC544\uC9DC}{\uC544\uCC28}{\uC545\uC0AC}{\uC545\uC2F8}{\uC546\uCE74}{\uC548\uAC00}{\uC548\uC790}{\uC548\uC9DC}{\uC548\uD558}{\uC54C\uAC00}{\uC54C\uB530}{\uC54C\uB9C8}{\uC54C\uBC14}{\uC54C\uBE60}{\uC54C\uC0AC}{\uC54C\uC2F8}{\uC54C\uD0C0}{\uC54C\uD30C}{\uC54C\uD558}{\uC555\uC0AC}{\uC555\uC2F8}{\uC558\uC0AC}{\uC5C5\uC12F\uC501}{\uC5C6\uC5C8\uC2B5}]");
+        UnicodeSet sourceSet = new UnicodeSet();
+        addRepresentativeHangul(sourceSet, 2, false);
+        addRepresentativeHangul(sourceSet, 3, false);
+        addRepresentativeHangul(sourceSet, 2, true);
+        addRepresentativeHangul(sourceSet, 3, true);
+        // add the boundary cases; we want an example of each case of V + L and one example of each case of T+L
+
+        UnicodeSet more = getRepresentativeBoundaryHangul();
+        sourceSet.addAll(more);
+        sourceSet.addAll(extraSamples);
+        return sourceSet;
+    }
+
+    private static UnicodeSet getRepresentativeBoundaryHangul() {
+        UnicodeSet resultToAddTo = new UnicodeSet();
+        // U+1100 HANGUL CHOSEONG KIYEOK
+        // U+1161 HANGUL JUNGSEONG A
+        UnicodeSet L = new UnicodeSet("[:hst=L:]");
+        UnicodeSet V = new UnicodeSet("[:hst=V:]");
+        UnicodeSet T = new UnicodeSet("[:hst=T:]");
+
+        String prefixLV = "\u1100\u1161";
+        String prefixL = "\u1100";
+        String suffixV = "\u1161";
+        String nullL = "\u110B"; // HANGUL CHOSEONG IEUNG
+
+        UnicodeSet L0 = new UnicodeSet("[\u1100\u110B]");
+
+        // do all combinations of L0 + V + nullL + V
+
+        for (UnicodeSetIterator iL0 = new UnicodeSetIterator(L0); iL0.next();) {
+            for (UnicodeSetIterator iV = new UnicodeSetIterator(V); iV.next();) {
+                for (UnicodeSetIterator iV2 = new UnicodeSetIterator(V); iV2.next();) {
+                    String sample = iL0.getString() + iV.getString() + nullL + iV2.getString();
+                    String trial = Normalizer.compose(sample, false);
+                    if (trial.length() == 2) {
+                        resultToAddTo.add(trial);
+                    }
+                }
+            }
+        }
+
+        for (UnicodeSetIterator iL = new UnicodeSetIterator(L); iL.next();) {
+            // do all combinations of "g" + V + L + "a"
+            final String suffix = iL.getString() + suffixV;
+            for (UnicodeSetIterator iV = new UnicodeSetIterator(V); iV.next();) {
+                String sample = prefixL + iV.getString() + suffix;
+                String trial = Normalizer.compose(sample, false);
+                if (trial.length() == 2) {
+                    resultToAddTo.add(trial);
+                }
+            }
+            // do all combinations of "ga" + T + L + "a"
+            for (UnicodeSetIterator iT = new UnicodeSetIterator(T); iT.next();) {
+                String sample = prefixLV + iT.getString() + suffix;
+                String trial = Normalizer.compose(sample, false);
+                if (trial.length() == 2) {
+                    resultToAddTo.add(trial);
+                }
+            }
+        }
+        return resultToAddTo;
+    }
+
+    private static void addRepresentativeHangul(UnicodeSet resultToAddTo, int leng, boolean noFirstConsonant) {
+        UnicodeSet notYetSeen = new UnicodeSet();
+        for (char c = '\uAC00'; c <  '\uD7AF'; ++c) {
+            String charStr = String.valueOf(c);
+            String decomp = Normalizer.decompose(charStr, false);
+            if (decomp.length() != leng) {
+                continue; // only take one length at a time
+            }
+            if (decomp.startsWith("\u110B ") != noFirstConsonant) {
+                continue;
+            }
+            if (!notYetSeen.containsAll(decomp)) {
+                resultToAddTo.add(c);
+                notYetSeen.addAll(decomp);
+            }
+        }
+    }
+
+
+    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,3,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 = "[\u06A9\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,3,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,3,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,3,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,3,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 long pairLimit  = 1000000; // make default be 1M.
+        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 {
+                    File translitErrorDirectory = new File("translitErrorLogs");
+                    if (!translitErrorDirectory.exists()) {
+                        translitErrorDirectory.mkdir();
+                    }
+                    String logFileName = "translitErrorLogs/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;
+        }
+
+        AbbreviatedUnicodeSetIterator usi = new AbbreviatedUnicodeSetIterator();
+        AbbreviatedUnicodeSetIterator usi2 = new AbbreviatedUnicodeSetIterator();
+
+        Transliterator sourceToTarget;
+        Transliterator targetToSource;
+
+        public void test2() {
+
+            sourceToTarget = Transliterator.getInstance(transliteratorID);
+            targetToSource = sourceToTarget.getInverse();
+
+            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("" + getSourceTarget(transliteratorID) + ", Must not NFC everything");
+            }
+            if (!checkIrrelevants(targetToSource, irrelevants)) {
+                logFails("" + getTargetSource(transliteratorID) + ", 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", "\u200E<br>\n\u200E"));
+                        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", "\u200E<br>\n\u200E"));
+                        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();
+
+                checkSourceTargetSource(sourceToTarget2);
+
+                checkTargetSourceTarget(targetToSource2);
+            }
+
+            UnicodeSet failSourceTarg = new UnicodeSet();
+
+
+            checkSourceTargetSingles(failSourceTarg);
+
+            boolean quickRt = checkSourceTargetDoubles(failSourceTarg);
+
+            UnicodeSet failTargSource = new UnicodeSet();
+            UnicodeSet failRound = new UnicodeSet();
+
+            checkTargetSourceSingles(failTargSource, failRound);
+            checkTargetSourceDoubles(quickRt, failTargSource, failRound);
+        }
+
+        private void checkSourceTargetSource(Transliterator sourceToTarget2) {
+            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("" + getSourceTarget(transliteratorID) + ", toRules", cs, targ, targ2);
+                }
+            }
+        }
+
+        private void checkTargetSourceTarget(Transliterator targetToSource2) {
+            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("" + getTargetSource(transliteratorID) + ", toRules", cs, targ, targ2);
+                }
+            }
+        }
+
+        private void checkSourceTargetSingles(UnicodeSet failSourceTarg) {
+            log.logln("Checking that source characters convert to target - Singles");
+            out.println("<h3>Checking that source characters convert to target - Singles</h3>");
+
+
+            /*
+            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("" + getSourceTarget(transliteratorID) + "", 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("" + getSourceTarget(transliteratorID) + "", cs, targ, cs2, targ2);
+                }
+            }
+        }
+
+        private boolean checkSourceTargetDoubles(UnicodeSet failSourceTarg) {
+            log.logln("Checking that source characters convert to target - Doubles");
+            out.println("<h3>Checking that source characters convert to target - Doubles</h3>");
+            long count = 0;
+
+            /*
+            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;
+                 */
+                log.logln(count + "/" + pairLimit + " Checking starting with " + UTF16.valueOf(c));
+                usi2.reset(sourceRangeMinusFailures, quickRt, density);
+
+                while (usi2.next()) {
+                    int d = usi2.codepoint;
+                    ++count;
+
+                    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("" + getSourceTarget(transliteratorID) + "", cs, targ, toTarget, badCharacters);
+                            continue;
+                        }
+                    }
+                    String cs2 = Normalizer.normalize(cs, Normalizer.NFD);
+                    String targ2 = sourceToTarget.transliterate(cs2);
+                    if (!targ.equals(targ2)) {
+                        logNotCanonical("" + getSourceTarget(transliteratorID) + "", cs, targ, cs2, targ2);
+                    }
+                }
+            }
+            return quickRt;
+        }
+
+        void checkTargetSourceSingles(UnicodeSet failTargSource, UnicodeSet failRound) {
+            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>");
+
+
+            /*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("" + getTargetSource(transliteratorID) + "", 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("" + getTargetSource(transliteratorID) + "", targ, reverse, targ2, reverse2);
+                }
+            }
+
+        }
+
+        private void checkTargetSourceDoubles(boolean quickRt, UnicodeSet failTargSource,
+                UnicodeSet failRound) {
+            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>");
+            long 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;
+
+                //log.log(TestUtility.hex(c));
+
+                /*
+                for (char d = 0; d < 0xFFFF; ++d) {
+                    if (TestUtility.isUnassigned(d) ||
+                        !targetRange.contains(d)) continue;
+                 */
+                log.logln(count + "/" + pairLimit + " Checking starting with " + UTF16.valueOf(c));
+                usi2.reset(targetRangeMinusFailures, quickRt, density);
+
+                while (usi2.next()) {
+                    
+                    int d = usi2.codepoint;
+                    if (d < 0) break;
+                    
+                    if (++count > pairLimit) {
+                        throw new TestTruncated("Test truncated at " + pairLimit);
+                    }
+
+                    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("" + getTargetSource(transliteratorID) + "", 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("" + getTargetSource(transliteratorID) + "", targ, reverse, targ2, reverse2);
+                    }
+                }
+            }
+            log.logln("");
+        }
+
+        /**
+         * @param transliteratorID2
+         * @return
+         */
+        private String getTargetSource(String transliteratorID2) {
+            return "Target-Source [" + transliteratorID2 + "]";
+        }
+
+        /**
+         * @param transliteratorID2
+         * @return
+         */
+        private String getSourceTarget(String transliteratorID2) {
+            return "Source-Target [" + transliteratorID2 + "]";
+        }
+
+        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/main/tests/translit/src/com/ibm/icu/dev/test/translit/TestAll.java b/main/tests/translit/src/com/ibm/icu/dev/test/translit/TestAll.java
new file mode 100644
index 0000000..8301230
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/translit/TestAll.java
@@ -0,0 +1,35 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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[] {
+                "AnyScriptTest",
+                "CompoundTransliteratorTest",
+                "ErrorTest",
+                "JamoTest",
+                "ReplaceableTest",
+                "RoundTripTest",
+                "TransliteratorTest",
+                "RegexUtilitiesTest",
+                "UnicodeMapTest",
+        });
+    }
+
+    public static final String CLASS_TARGET_NAME = "Translit";
+}
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/translit/TestUtility.java b/main/tests/translit/src/com/ibm/icu/dev/test/translit/TestUtility.java
new file mode 100644
index 0000000..9bf23ce
--- /dev/null
+++ b/main/tests/translit/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/main/tests/translit/src/com/ibm/icu/dev/test/translit/TransliteratorTest.java b/main/tests/translit/src/com/ibm/icu/dev/test/translit/TransliteratorTest.java
new file mode 100644
index 0000000..8c20450
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/translit/TransliteratorTest.java
@@ -0,0 +1,3731 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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 TestHangul() {
+
+        Transliterator lh = Transliterator.getInstance("Latin-Hangul");
+        Transliterator hl = lh.getInverse();
+
+        assertTransform("Transform", "\uCE20", lh, "ch");
+
+        assertTransform("Transform", "\uC544\uB530", lh, hl, "atta", "a-tta");
+        assertTransform("Transform", "\uC544\uBE60", lh, hl, "appa", "a-ppa");
+        assertTransform("Transform", "\uC544\uC9DC", lh, hl, "ajja", "a-jja");
+        assertTransform("Transform", "\uC544\uAE4C", lh, hl, "akka", "a-kka");
+        assertTransform("Transform", "\uC544\uC2F8", lh, hl, "assa", "a-ssa");
+        assertTransform("Transform", "\uC544\uCC28", lh, hl, "acha", "a-cha");
+        assertTransform("Transform", "\uC545\uC0AC", lh, hl, "agsa", "ag-sa");
+        assertTransform("Transform", "\uC548\uC790", lh, hl, "anja", "an-ja");
+        assertTransform("Transform", "\uC548\uD558", lh, hl, "anha", "an-ha");
+        assertTransform("Transform", "\uC54C\uAC00", lh, hl, "alga", "al-ga");
+        assertTransform("Transform", "\uC54C\uB9C8", lh, hl, "alma", "al-ma");
+        assertTransform("Transform", "\uC54C\uBC14", lh, hl, "alba", "al-ba");
+        assertTransform("Transform", "\uC54C\uC0AC", lh, hl, "alsa", "al-sa");
+        assertTransform("Transform", "\uC54C\uD0C0", lh, hl, "alta", "al-ta");
+        assertTransform("Transform", "\uC54C\uD30C", lh, hl, "alpa", "al-pa");
+        assertTransform("Transform", "\uC54C\uD558", lh, hl, "alha", "al-ha");
+        assertTransform("Transform", "\uC555\uC0AC", lh, hl, "absa", "ab-sa");
+        assertTransform("Transform", "\uC548\uAC00", lh, hl, "anga", "an-ga");
+        assertTransform("Transform", "\uC545\uC2F8", lh, hl, "agssa", "ag-ssa");
+        assertTransform("Transform", "\uC548\uC9DC", lh, hl, "anjja", "an-jja");
+        assertTransform("Transform", "\uC54C\uC2F8", lh, hl, "alssa", "al-ssa");
+        assertTransform("Transform", "\uC54C\uB530", lh, hl, "altta", "al-tta");
+        assertTransform("Transform", "\uC54C\uBE60", lh, hl, "alppa", "al-ppa");
+        assertTransform("Transform", "\uC555\uC2F8", lh, hl, "abssa", "ab-ssa");
+        assertTransform("Transform", "\uC546\uCE74", lh, hl, "akkka", "akk-ka");
+        assertTransform("Transform", "\uC558\uC0AC", lh, hl, "asssa", "ass-sa");
+
+    }
+
+    public void TestChinese() {
+        Transliterator hanLatin = Transliterator.getInstance("Han-Latin");
+        assertTransform("Transform", "z\u00E0o Unicode", hanLatin, "\u9020Unicode");
+        assertTransform("Transform", "z\u00E0i chu\u00E0ng z\u00E0o Unicode zh\u012B qi\u00E1n", hanLatin, "\u5728\u5275\u9020Unicode\u4E4B\u524D");
+    } 
+
+    public void TestRegistry() {
+        checkRegistry("foo3", "::[a-z]; ::NFC; [:letter:] a > b;"); // check compound
+        checkRegistry("foo2", "::NFC; [:letter:] a > b;"); // check compound
+        checkRegistry("foo1", "[:letter:] a > b;");
+        for (Enumeration e = Transliterator.getAvailableIDs(); e.hasMoreElements(); ) {
+            String id = (String) e.nextElement();
+            checkRegistry(id);
+        }
+    }
+
+    private void checkRegistry (String id, String rules) {
+        Transliterator foo = Transliterator.createFromRules(id, rules, Transliterator.FORWARD);
+        Transliterator.registerInstance(foo);
+        checkRegistry(id);
+    }
+
+    private void checkRegistry(String id) {
+        Transliterator fie = Transliterator.getInstance(id);
+        final UnicodeSet fae = new UnicodeSet("[a-z5]");
+        fie.setFilter(fae);
+        Transliterator foe = Transliterator.getInstance(id);
+        UnicodeFilter fee = foe.getFilter();
+        if (fae.equals(fee)) {
+            errln("Changed what is in registry for " + id);
+        }
+    }
+
+    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.getFilter() != null) {
+            //                errln("Fail: Should never have filter on transliterator unless we started with one: " + ID + ", " + t.getFilter());
+            //            }
+
+            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("foo5", "$\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 TestCasing() {
+        Transliterator toLower = Transliterator.getInstance("lower");
+        Transliterator toCasefold = Transliterator.getInstance("casefold");
+        Transliterator toUpper = Transliterator.getInstance("upper");
+        Transliterator toTitle = Transliterator.getInstance("title");
+        for (int i = 0; i < 0x600; ++i) {
+            String s = UTF16.valueOf(i);
+
+            String lower = UCharacter.toLowerCase(ULocale.ROOT, s);
+            assertEquals("Lowercase", lower, toLower.transform(s));
+
+            String casefold = UCharacter.foldCase(s, true);
+            assertEquals("Casefold", casefold, toCasefold.transform(s));
+
+            String title = UCharacter.toTitleCase(ULocale.ROOT, s, null);
+            assertEquals("Title", title, toTitle.transform(s));
+
+            String upper = UCharacter.toUpperCase(ULocale.ROOT, s);
+            assertEquals("Upper", upper, toUpper.transform(s));
+        }
+    }
+
+    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 Any-X transliterators with sample letters from all scripts.
+     */
+    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 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());
+    }
+    /*
+     * 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;
+    }
+
+    private void assertTransform(String message, String expected, StringTransform t, String source) {
+        assertEquals(message + " " + source, expected, t.transform(source));
+    }
+
+
+    private void assertTransform(String message, String expected, StringTransform t, StringTransform back, String source, String source2) {
+        assertEquals(message + " " +source, expected, t.transform(source));
+        assertEquals(message + " " +source2, expected, t.transform(source2));
+        assertEquals(message + " " + expected, source, back.transform(expected));
+    }
+
+    /*
+     * Tests the method public Enumeration<String> getAvailableTargets(String source)
+     */
+    public void TestGetAvailableTargets() {
+        try {
+            // Tests when if (targets == null) is true
+            Transliterator.getAvailableTargets("");
+        } catch (Exception e) {
+            errln("TransliteratorRegistry.getAvailableTargets(String) was not " + "supposed to return an exception.");
+        }
+    }
+
+    /*
+     * Tests the method public Enumeration<String> getAvailableVariants(String source, String target)
+     */
+    public void TestGetAvailableVariants() {
+        try {
+            // Tests when if (targets == null) is true
+            Transliterator.getAvailableVariants("", "");
+        } catch (Exception e) {
+            errln("TransliteratorRegistry.getAvailableVariants(String) was not " + "supposed to return an exception.");
+        }
+    }
+
+    /*
+     * Tests the mehtod String nextLine() in RuleBody
+     */
+    public void TestNextLine() {
+        // Tests when "if (s != null && s.length() > 0 && s.charAt(s.length() - 1) == '\\') is true
+        try{
+            Transliterator.createFromRules("gif", "\\", Transliterator.FORWARD);
+        } catch(Exception e){
+            errln("TransliteratorParser.nextLine() was not suppose to return an " +
+                    "exception for a rule of '\\'");
+        }
+    }
+}
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/translit/UnicodeMapTest.java b/main/tests/translit/src/com/ibm/icu/dev/test/translit/UnicodeMapTest.java
new file mode 100644
index 0000000..3fe4f20
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/translit/UnicodeMapTest.java
@@ -0,0 +1,229 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.translit;
+
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Random;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import java.util.TreeSet;
+import java.util.Map.Entry;
+
+import com.ibm.icu.dev.test.TestFmwk;
+import com.ibm.icu.dev.test.util.UnicodeMap;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+
+/**
+ * @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 TestAMonkey() {
+        SortedMap<String,Integer> stayWithMe = new TreeMap<String,Integer>(OneFirstComparator);
+
+        UnicodeMap<Integer> me = new UnicodeMap<Integer>().putAll(stayWithMe);
+        // check one special case, removal near end
+        me.putAll(0x10FFFE, 0x10FFFF, 666);
+        me.remove(0x10FFFF);
+        
+        int iterations = 100000;
+        SortedMap<String,Integer> test = new TreeMap();
+
+        Random rand = new Random(0);
+        String other;
+        Integer value;
+        // try modifications
+        for (int i = 0; i < iterations ; ++i) {
+            switch(rand.nextInt(20)) {
+            case 0:
+                logln("clear");
+                stayWithMe.clear();
+                me.clear();
+                break;
+            case 1:
+                fillRandomMap(rand, 5, test);
+                logln("putAll\t" + test);
+                stayWithMe.putAll(test);
+                me.putAll(test);
+                break;
+            case 2: case 3: case 4: case 5: case 6: case 7: case 8:
+                other = getRandomKey(rand);
+//                if (other.equals("\uDBFF\uDFFF") && me.containsKey(0x10FFFF) && me.get(0x10FFFF).equals(me.get(0x10FFFE))) {
+//                    System.out.println("Remove\t" + other + "\n" + me);
+//                }
+                logln("remove\t" + other);
+                stayWithMe.remove(other);
+                try {
+                    me.remove(other);
+                } catch (IllegalArgumentException e) {
+                    errln("remove\t" + other + "\tfailed: " + e.getMessage() + "\n" + me);
+                    me.clear();
+                    stayWithMe.clear();
+                }
+                break;
+            default:
+                other = getRandomKey(rand);
+                value = rand.nextInt(50)+50;
+                logln("put\t" + other + " = " + value);
+                stayWithMe.put(other, value);
+                me.put(other,value);
+                break;
+            }
+            checkEquals(me, stayWithMe);
+        }
+    }
+
+    /**
+     * @param rand 
+     * @param nextInt
+     * @param test 
+     * @return
+     */
+    private SortedMap<String, Integer> fillRandomMap(Random rand, int max, SortedMap<String, Integer> test) {
+        test.clear();
+        max = rand.nextInt(max);
+        for (int i = 0; i < max; ++i) {
+            test.put(getRandomKey(rand), rand.nextInt(50)+50);
+        }
+        return test;
+    }
+
+    Set temp = new HashSet();
+    /**
+     * @param me
+     * @param stayWithMe
+     */
+    private void checkEquals(UnicodeMap<Integer> me, SortedMap<String, Integer> stayWithMe) {
+        temp.clear();
+        for (Entry<String, Integer> e : me.entrySet()) {
+            temp.add(e);
+        }
+        Set<Entry<String, Integer>> entrySet = stayWithMe.entrySet();
+        if (!entrySet.equals(temp)) {
+            logln(me.entrySet().toString());
+            logln(me.toString());
+            assertEquals("are in parallel", entrySet, temp);
+            // we failed. Reset and start again
+            entrySet.clear();
+            temp.clear();
+            return;
+        }
+        for (String key : stayWithMe.keySet()) {
+            assertEquals("containsKey", stayWithMe.containsKey(key), me.containsKey(key));
+            Integer value = stayWithMe.get(key);
+            assertEquals("get", value, me.get(key));
+            assertEquals("containsValue", stayWithMe.containsValue(value), me.containsValue(value));
+            int cp = UnicodeSet.getSingleCodePoint(key);
+            if (cp != Integer.MAX_VALUE) {
+                assertEquals("get", value, me.get(cp));
+            }
+        }
+        Set<String> nonCodePointStrings = stayWithMe.tailMap("").keySet();
+        if (nonCodePointStrings.size() == 0) nonCodePointStrings = null; // for parallel api
+        assertEquals("getNonRangeStrings", nonCodePointStrings, me.getNonRangeStrings());
+        
+        TreeSet<Integer> values = new TreeSet<Integer>(stayWithMe.values());
+        TreeSet<Integer> myValues = new TreeSet<Integer>(me.values());
+        assertEquals("values", myValues, values);
+
+        for (String key : stayWithMe.keySet()) {
+            assertEquals("containsKey", stayWithMe.containsKey(key), me.containsKey(key));
+        }
+    }
+    
+    static Comparator<String> OneFirstComparator = new Comparator<String>() {
+        public int compare(String o1, String o2) {
+            int cp1 = UnicodeSet.getSingleCodePoint(o1);
+            int cp2 = UnicodeSet.getSingleCodePoint(o2);
+            int result = cp1 - cp2;
+            if (result != 0) {
+                return result;
+            }
+            if (cp1 == Integer.MAX_VALUE) {
+                return o1.compareTo(o2);
+            }
+            return 0;
+        }
+        
+    };
+
+    /**
+     * @param rand 
+     * @param others
+     * @return
+     */
+    private String getRandomKey(Random rand) {
+        int r = rand.nextInt(30);
+        if (r == 0) {
+            return UTF16.valueOf(r); 
+        } else if (r < 10) {
+            return UTF16.valueOf('A'-1+r);
+        } else if (r < 20) {
+            return UTF16.valueOf(0x10FFFF - (r-10));
+//        } else if (r == 20) {
+//            return "";
+        }
+        return "a" + UTF16.valueOf(r + 'a'-1);
+    }
+
+    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;
+    }
+}
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/translit/WriteCharts.java b/main/tests/translit/src/com/ibm/icu/dev/test/translit/WriteCharts.java
new file mode 100644
index 0000000..9241f83
--- /dev/null
+++ b/main/tests/translit/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/main/tests/translit/src/com/ibm/icu/dev/test/translit/langtagRegex.txt b/main/tests/translit/src/com/ibm/icu/dev/test/translit/langtagRegex.txt
new file mode 100644
index 0000000..4bee597
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/translit/langtagRegex.txt
@@ -0,0 +1,87 @@
+# Copyright (C) 2006-2009, Google, International Business Machines Corporation and others. All Rights Reserved.
+# Regex for recognizing RFC 4646 well-formed tags
+# http://www.rfc-editor.org/rfc/rfc4646.txt
+# http://tools.ietf.org/html/draft-ietf-ltru-4646bis-21
+
+# The structure requires no forward references, so it reverses the order.
+# It uses Java/Perl syntax instead of the old ABNF
+# The uppercase comments are fragments copied from RFC 4646
+
+# Note: the tool requires that any real "=" or "#" or ";" in the regex be escaped.
+
+$alpha  = [a-z] ;   # ALPHA
+$digit  = [0-9] ;   # DIGIT
+$alphanum   = [a-z 0-9] ;   # ALPHA / DIGIT
+$x  = x ;   # private use singleton
+$singleton = [a-w y-z] ; # other singleton
+$s  = [-_] ; # separator -- lenient parsers will use [-_] -- strict will use [-]
+
+# Now do the components. The structure is slightly different to allow for capturing the right components.
+# The notation (?:....) is a non-capturing version of (...): so the "?:" can be deleted if someone doesn't care about capturing.
+
+$language   = $alpha{2,8} | $alpha{2,3} $s $alpha{3};
+            
+   # ABNF (2*3ALPHA) / 4ALPHA / 5*8ALPHA  --- note: because of how | works in regex, don't use $alpha{2,3} | $alpha{4,8} 
+   # We don't have to have the general case of extlang, because there can be only one extlang (except for zh-min-nan).
+
+# Note: extlang invalid in Unicode language tags
+
+$script = $alpha{4} ;   # 4ALPHA 
+
+$region = $alpha{2} | $digit{3} ;    # 2ALPHA / 3DIGIT
+
+$variant    = (?: $alphanum{5,8} | $digit $alphanum{3} ) ;  # 5*8alphanum / (DIGIT 3alphanum)
+
+$extension  = $singleton (?: $s $alphanum{2,8} )+ ; # singleton 1*("-" (2*8alphanum))
+
+$privateUse = $x (?: $s $alphanum{1,8} )+ ; # "x" 1*("-" (1*8alphanum))
+
+# Define certain grandfathered codes, since otherwise the regex is pretty useless.
+# Since these are limited, this is safe even later changes to the registry --
+# the only oddity is that it might change the type of the tag, and thus
+# the results from the capturing groups.
+# http://www.iana.org/assignments/language-subtag-registry
+# Note that these have to be compared case insensitively, requiring (?i) below.
+
+$grandfathered  = en $s GB $s oed
+      | i $s (?: ami | bnn | default | enochian | hak | klingon | lux | mingo | navajo | pwn | tao | tay | tsu )
+      | no $s (?: bok | nyn )
+      | sgn $s (?: BE $s (?: fr | nl) | CH $s de )
+      | zh $s min $s nan;
+
+# old:         | zh $s (?: cmn (?: $s Hans | $s Hant )? | gan | min (?: $s nan)? | wuu | yue );
+# For well-formedness, we don't need the ones that would otherwise pass.
+# For validity, they need to be checked.
+
+# $grandfatheredWellFormed = (?:
+#         art $s lojban
+#     | cel $s gaulish
+#     | zh $s (?: guoyu | hakka | xiang )
+# );
+
+# Unicode locales: but we are shifting to a compatible form
+# $keyvalue = (?: $alphanum+ \= $alphanum+);
+# $keywords = ($keyvalue (?: \; $keyvalue)*);
+
+# We separate items that we want to capture as a single group
+
+$variantList   = $variant (?: $s $variant )* ; # special for multiples
+$extensionList = $extension (?: $s $extension )* ;   # special for multiples
+
+$langtag = (?: ( $language )
+      (?: $s ( $script ) )? 40%
+      (?: $s ( $region ) )? 40%
+      (?: $s ( $variantList ) )? 10%
+      (?: $s ( $extensionList ) )? 5%
+      (?: $s ( $privateUse ) )? 5%);
+
+# Here is the final breakdown, with capturing groups for each of these components
+# The variants, extensions, grandfathered, and private-use may have interior '-'
+ 
+$root = (?i) # case-insensitive
+  (?:
+      $langtag 90%
+    | ( $privateUse ) 5%
+    | ( $grandfathered ) 5%)
+#    (?: \@ $keywords )? 5%
+    ;
\ No newline at end of file
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/translit/package.html b/main/tests/translit/src/com/ibm/icu/dev/test/translit/package.html
new file mode 100644
index 0000000..5fdff1c
--- /dev/null
+++ b/main/tests/translit/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/main/tests/translit/src/com/ibm/icu/dev/test/util/BNF.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/BNF.java
new file mode 100644
index 0000000..b1ab87f
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/util/BNF.java
@@ -0,0 +1,329 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Random;
+import java.util.Set;
+
+import com.ibm.icu.text.UnicodeSet;
+
+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;
+    }
+}
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/util/BagFormatter.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/BagFormatter.java
new file mode 100644
index 0000000..bec4e39
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/util/BagFormatter.java
@@ -0,0 +1,1148 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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);
+        }
+
+        @SuppressWarnings("unused")
+        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 limit;
+
+        NameIterator(String source) {
+            this.source = source;
+            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 = dir.length() == 0 ? new File(filename) : 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 BagFormatter setFixName(Transliterator fixName) {
+        this.fixName = fixName;
+        return this;
+    }
+
+    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;
+    }
+}
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/util/CaseIterator.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/CaseIterator.java
new file mode 100644
index 0000000..991b463
--- /dev/null
+++ b/main/tests/translit/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/main/tests/translit/src/com/ibm/icu/dev/test/util/CollectionUtilities.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/CollectionUtilities.java
new file mode 100644
index 0000000..611856e
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/util/CollectionUtilities.java
@@ -0,0 +1,450 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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;
+import java.util.regex.Matcher;
+
+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;
+            Comparator bbc = bb.comparator();
+            Comparator aac = aa.comparator();
+            if (bbc == null && 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() < b.size()) 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 && 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(aac)) {
+                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();
+    }
+
+    /**
+     * 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.
+        }
+    }
+
+    /**
+     * 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);
+        }
+    }
+
+    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();
+        }
+    }
+
+}
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/util/DataInputCompressor.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/DataInputCompressor.java
new file mode 100644
index 0000000..17b38b2
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/util/DataInputCompressor.java
@@ -0,0 +1,229 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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.LinkedHashSet;
+import java.util.List;
+
+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;
+    }
+}
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/util/DataOutputCompressor.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/DataOutputCompressor.java
new file mode 100644
index 0000000..0d31009
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/util/DataOutputCompressor.java
@@ -0,0 +1,207 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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.Map;
+import java.util.SortedSet;
+
+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.findCommonPrefix(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++));
+        }
+    }
+}
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/util/FileUtilities.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/FileUtilities.java
new file mode 100644
index 0000000..2df2f28
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/util/FileUtilities.java
@@ -0,0 +1,83 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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);
+        */
+        appendBufferedReader(br, output, replacementList);
+    }
+
+    public static void appendBufferedReader(BufferedReader br,
+            PrintWriter output, String[] replacementList) throws IOException {
+        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);
+        }
+        br.close();
+    }
+
+    /**
+     * 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;
+    }
+}
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/util/ICUPropertyFactory.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/ICUPropertyFactory.java
new file mode 100644
index 0000000..488ca5c
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/util/ICUPropertyFactory.java
@@ -0,0 +1,428 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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 java.util.Set;
+import java.util.TreeSet;
+
+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(getAges(),
+                        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;
+            }
+
+            static String[] AGES = null;
+            private String[] getAges() {
+                if (AGES == null) {
+                  Set ages = new TreeSet();
+                  for (int i = 0; i < 0x10FFFF; ++i) {
+                    VersionInfo age = UCharacter.getAge(i);
+                    ages.add(age.toString());
+                  }
+                  AGES = (String[]) ages.toArray(new String[ages.size()]);
+                }
+                return AGES;
+            }
+
+            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);
+        }
+    }
+}
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/util/ImmutableEntry.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/ImmutableEntry.java
new file mode 100644
index 0000000..be5e88c
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/util/ImmutableEntry.java
@@ -0,0 +1,48 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.Map;
+
+/**
+ * @author markdavis
+ *
+ */
+public class ImmutableEntry<K,V> implements Map.Entry<K,V> {
+    final K k;
+    final V v;
+
+    ImmutableEntry(K key, V value) {
+        k = key;
+        v = value;
+    }
+
+    public K getKey()   {return k;}
+
+    public V getValue() {return v;}
+
+    public V setValue(V value) {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean equals(Object o) {
+        try {
+            Map.Entry e = (Map.Entry)o;
+            return UnicodeMap.areEqual(e.getKey(), k) && UnicodeMap.areEqual(e.getValue(), v);
+        } catch (ClassCastException e) {
+            return false;
+        }
+    }
+
+    public int hashCode() {
+        return ((k==null ? 0 : k.hashCode()) ^ (v==null ? 0 : v.hashCode()));
+    }
+
+    public String toString() {
+        return k+"="+v;
+    }
+}
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/util/Pick.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/Pick.java
new file mode 100644
index 0000000..67222ba
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/util/Pick.java
@@ -0,0 +1,796 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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];
+
+        @SuppressWarnings("unused")
+        Pick simplify() {
+            if (items.length > 1) return this;
+            if (items.length == 1) return items[0];
+            return null;
+        }
+        
+        @SuppressWarnings("unused")
+        int size() {
+            return items.length;
+        }
+
+        @SuppressWarnings("unused")
+        Pick getLast() {
+            return items[items.length-1];
+        }
+
+        @SuppressWarnings("unused")
+        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/main/tests/translit/src/com/ibm/icu/dev/test/util/PrettyPrinter.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/PrettyPrinter.java
new file mode 100644
index 0000000..f57ee17
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/util/PrettyPrinter.java
@@ -0,0 +1,290 @@
+/**
+ *******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ **********************************************************************
+ * Author: Mark Davis
+ **********************************************************************
+ */
+
+package com.ibm.icu.dev.test.util;
+
+import java.io.IOException;
+import java.text.FieldPosition;
+import java.util.Comparator;
+import java.util.TreeSet;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.Formatter;
+import com.ibm.icu.text.StringTransform;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+import com.ibm.icu.text.UTF16.StringComparator;
+
+/** Provides more flexible formatting of UnicodeSet patterns.
+ */
+public class PrettyPrinter implements Formatter<UnicodeSet, Appendable>{
+    private static final StringComparator CODEPOINT_ORDER = new UTF16.StringComparator(true,false,0);
+    private static final UnicodeSet PATTERN_WHITESPACE = (UnicodeSet) new UnicodeSet("[[:Cn:][:Default_Ignorable_Code_Point:][:patternwhitespace:]]").freeze();
+    private static final UnicodeSet SORT_AT_END = (UnicodeSet) new UnicodeSet("[[:Cn:][:Cs:][:Co:][:Ideographic:]]").freeze();
+    private static final UnicodeSet QUOTED_SYNTAX = (UnicodeSet) new UnicodeSet("[\\[\\]\\-\\^\\&\\\\\\{\\}\\$\\:]").addAll(PATTERN_WHITESPACE).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(PATTERN_WHITESPACE);
+    private StringTransform quoter = null;
+
+    private Comparator<String> ordering;
+    private Comparator<String> spaceComp;
+
+    public PrettyPrinter() {
+    }
+
+    public StringTransform getQuoter() {
+        return quoter;
+    }
+
+    public PrettyPrinter setQuoter(StringTransform 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<String> getOrdering() {
+        return ordering;
+    }
+
+    /**
+     * @param ordering the resulting  ordering of the list of characters in the pattern
+     * @return
+     */
+    public PrettyPrinter setOrdering(Comparator ordering) {
+        this.ordering = ordering == null ? CODEPOINT_ORDER : new com.ibm.icu.impl.MultiComparator<String>(ordering, CODEPOINT_ORDER);
+        return this;
+    }
+
+    public Comparator<String> 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) {
+        if (toQuote != null) {
+            toQuote = (UnicodeSet)toQuote.cloneAsThawed();
+            toQuote.addAll(PATTERN_WHITESPACE);
+            this.toQuote = toQuote;
+        }
+        return this;
+    }
+
+
+    /**
+     * Get the pattern for a particular set.
+     * @param uset
+     * @return formatted UnicodeSet
+     */
+    public String format(UnicodeSet uset) {
+        first = true;
+        UnicodeSet putAtEnd = new UnicodeSet(uset).retainAll(SORT_AT_END); // remove all the unassigned gorp for now
+        // make sure that comparison separates all strings, even canonically equivalent ones
+        TreeSet<String> orderedStrings = new TreeSet<String>(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 (String item : orderedStrings) {
+            appendUnicodeSetItem(item);
+        }
+        for (UnicodeSetIterator it = new UnicodeSetIterator(putAtEnd); it.next();) { // add back the unassigned gorp
+            appendUnicodeSetItem(it.codepoint); // we know that these are only codepoints, not strings, so this is safe
+        }
+        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 + Utility.LINE_SEPARATOR + " source-result: " + new UnicodeSet(uset).removeAll(doubleCheck) +  Utility.LINE_SEPARATOR + " 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) {
+        if (UTF16.hasMoreCodePointsThan(s, 1)) {
+            flushLast();
+            addSpaceAsNeededBefore(s);
+            appendQuoted(s);
+            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 addSpaceAsNeededBefore(String s) {
+        if (first) {
+            first = false;
+        } else if (spaceComp != null && spaceComp.compare(s, lastString) != 0) {
+            target.append(' ');
+        } else {
+            int cp = UTF16.charAt(s,0);
+            if (!toQuote.contains(cp) && !QUOTED_SYNTAX.contains(cp)) {
+                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 addSpaceAsNeededBefore(int codepoint) {
+        addSpaceAsNeededBefore(UTF16.valueOf(codepoint));
+    }
+
+    private void flushLast() {
+        if (lastCodePoint >= 0) {
+            addSpaceAsNeededBefore(firstCodePoint);
+            if (firstCodePoint != lastCodePoint) {
+                appendQuoted(firstCodePoint);
+                if (firstCodePoint + 1 != lastCodePoint) {
+                    target.append('-');
+                } else {
+                    addSpaceAsNeededBefore(lastCodePoint);
+                }
+            }
+            appendQuoted(lastCodePoint);
+            lastString = UTF16.valueOf(lastCodePoint);
+            firstCodePoint = lastCodePoint = -2;
+        }
+    }
+
+
+    private void appendQuoted(String s) {
+        if (toQuote.containsSome(s) && quoter != null) {
+            target.append(quoter.transform(s));
+        } else {
+            int cp;
+            target.append("{");
+            for (int i = 0; i < s.length(); i += UTF16.getCharCount(cp)) {
+                appendQuoted(cp = UTF16.charAt(s, i));
+            }
+            target.append("}");
+        }
+    }
+
+    PrettyPrinter appendQuoted(int codePoint) {
+        if (toQuote.contains(codePoint)) {
+            if (quoter != null) {
+                target.append(quoter.transform(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 (PATTERN_WHITESPACE.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();
+    //  }
+
+    public Appendable format(UnicodeSet obj, Appendable toAppendTo, FieldPosition pos) {
+        try {
+            return toAppendTo.append(format(obj));
+        } catch (IOException e) {
+            throw new IllegalArgumentException(e);
+        }
+    }
+}
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/util/Quoter.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/Quoter.java
new file mode 100644
index 0000000..d8d6ab2
--- /dev/null
+++ b/main/tests/translit/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/main/tests/translit/src/com/ibm/icu/dev/test/util/Tabber.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/Tabber.java
new file mode 100644
index 0000000..aa75fa6
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/util/Tabber.java
@@ -0,0 +1,239 @@
+
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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<String> parameters = new ArrayList();
+        private String element = "td";
+        {
+            setPrefix("<tr>");
+            setPostfix("</tr>");
+        }
+        public HTMLTabber setParameters(int count, String params) {
+            // fill in
+            while (parameters.size() <= count) {
+                parameters.add(null);
+            }
+            parameters.set(count,params);
+            return this;
+        }
+        
+        public String getElement() {
+            return element;
+        }
+
+        public HTMLTabber setElement(String element) {
+            this.element = element;
+            return this;
+        }
+
+        public void process_field(int count, String source, int start, int limit, StringBuffer output) {
+            output.append("<" + element);
+            String params = null;
+            if (count < parameters.size()) {
+                params = parameters.get(count);
+            }
+            if (params != null) {
+                output.append(' ');
+                output.append(params);
+            }
+            output.append(">");
+            output.append(source.substring(start, limit));
+            // TODO Quote string
+            output.append("</" + element + ">");            
+        }
+    }
+    /**
+     */
+    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/main/tests/translit/src/com/ibm/icu/dev/test/util/TestBNF.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/TestBNF.java
new file mode 100644
index 0000000..e2f9017
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/util/TestBNF.java
@@ -0,0 +1,240 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.Random;
+
+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));
+            }
+        }
+    }
+
+}
+
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/util/TestBagFormatter.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/TestBagFormatter.java
new file mode 100644
index 0000000..3107dfd
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/util/TestBagFormatter.java
@@ -0,0 +1,243 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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.getUnicodeMap());
+                    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));
+    }
+    */
+}
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/util/TestUtilities.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/TestUtilities.java
new file mode 100644
index 0000000..597c40e
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/util/TestUtilities.java
@@ -0,0 +1,508 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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.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.keySet(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, String string, 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, null, 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() {
+        TreeSet ts1 = new TreeSet();
+        TreeSet ts2 = new TreeSet();
+        int size = 1000;
+        int iterations = 1000;
+        String prefix =  "abc";
+        String postfix = "nop";
+        for (int i = 0; i < size; ++i) {
+            ts1.add(prefix + String.valueOf(i) + postfix);
+            ts2.add(prefix + String.valueOf(i) + postfix);
+        }
+        // warm up
+        CollectionUtilities.containsAll(ts1, ts2);
+        ts1.containsAll(ts2);
+
+        timeAndCompare(ts1, ts2, iterations, true, .75);
+        // now different sets
+        ts1.add("Able");
+        timeAndCompare(ts1, ts2, iterations, true, .75);
+        timeAndCompare(ts2, ts1, iterations*100, false, 1.05);
+    }
+
+    private void timeAndCompare(TreeSet ts1, TreeSet ts2, int iterations, boolean expected, double factorOfStandard) {
+        double utilityTimeSorted = timeUtilityContainsAll(iterations, ts1, ts2, expected)/(double)iterations;
+        double standardTimeSorted = timeStandardContainsAll(iterations, ts1, ts2, expected)/(double)iterations;
+        
+        if (utilityTimeSorted < standardTimeSorted*factorOfStandard) {
+            logln("Sorted: Utility time (" + utilityTimeSorted + ") << Standard duration (" + standardTimeSorted + "); " + 100*(utilityTimeSorted/standardTimeSorted) + "%");
+        } else {
+            errln("Sorted: Utility time (" + utilityTimeSorted + ") !<< Standard duration (" + standardTimeSorted + "); " + 100*(utilityTimeSorted/standardTimeSorted) + "%");
+        }
+    }
+
+    private long timeStandardContainsAll(int iterations, Set hs1, Set hs2, boolean expected) {
+        long standardTime;
+        {
+            long start, end;
+            boolean temp = false;
+
+            start = System.currentTimeMillis();
+            for (int i = 0; i < iterations; ++i) {
+                temp = hs1.containsAll(hs2);
+                if (temp != expected) {
+                    errln("Bad result");
+                }
+            }
+            end = System.currentTimeMillis();
+            standardTime = end - start;
+        }
+        return standardTime;
+    }
+
+    private long timeUtilityContainsAll(int iterations, Set hs1, Set hs2, boolean expected) {
+        long utilityTime;
+        {
+            long start, end;
+            boolean temp = false;
+            start = System.currentTimeMillis();
+            for (int i = 0; i < iterations; ++i) {
+                temp = CollectionUtilities.containsAll(hs1, hs2);
+                if (temp != expected) {
+                    errln("Bad result");
+                }
+            }
+            end = System.currentTimeMillis();
+            utilityTime = end - start;
+        }
+        return utilityTime;
+    }
+    
+    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");
+        UnicodeMapIterator mi = new UnicodeMapIterator(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;
+        }
+    }
+
+}
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/util/Tokenizer.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/Tokenizer.java
new file mode 100644
index 0000000..cd5a84d
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/util/Tokenizer.java
@@ -0,0 +1,320 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.text.ParsePosition;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.text.SymbolTable;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeMatcher;
+import com.ibm.icu.text.UnicodeSet;
+
+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);
+        }
+        
+    }
+}
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/util/TransliteratorUtilities.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/TransliteratorUtilities.java
new file mode 100644
index 0000000..d100a11
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/util/TransliteratorUtilities.java
@@ -0,0 +1,149 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2002-2009, 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;
+
+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/main/tests/translit/src/com/ibm/icu/dev/test/util/UnicodeLabel.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/UnicodeLabel.java
new file mode 100644
index 0000000..cd75d5e
--- /dev/null
+++ b/main/tests/translit/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/main/tests/translit/src/com/ibm/icu/dev/test/util/UnicodeMap.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/UnicodeMap.java
new file mode 100644
index 0000000..b30c20f
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/util/UnicodeMap.java
@@ -0,0 +1,1058 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
+import java.util.Map.Entry;
+
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.text.StringTransform;
+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 and strings to values, optimized for single code points, 
+ * where ranges of code points have the same value.
+ * Much smaller storage than using HashMap, and much faster and more compact than
+ * a list of UnicodeSets. The API design mimics Map<String,T> but can't extend it due to some
+ * necessary changes (much as UnicodeSet mimics Set<String>). Note that nulls are not permitted as values;
+ * that is, a put(x,null) is the same as remove(x).<br>
+ * At this point "" is also not allowed as a key, although that may change.
+ * @author markdavis
+ */
+
+public final class UnicodeMap<T> implements Cloneable, Freezable, StringTransform, Iterable<String> {
+    /**
+     * 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;
+    /* package private */ T[] values;
+
+    private LinkedHashSet<T> availableValues = new LinkedHashSet<T>();
+    private transient boolean staleAvailableValues;
+
+    private transient boolean errorOnReset;
+    private transient boolean locked;
+    private int lastIndex;
+    private Map<String,T> stringMap;
+
+    { clear(); }
+
+    public UnicodeMap<T> 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 = (T[]) new Object[10];
+
+        availableValues.clear();
+        staleAvailableValues = false;
+
+        errorOnReset = false;
+        lastIndex = 0;
+        stringMap = null;
+        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 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 + values[i].hashCode();
+        }
+        return result;
+    }
+
+    /**
+     * Standard clone. Warning, as with Collections, does not do deep clone.
+     */
+    public UnicodeMap<T> cloneAsThawed() {
+        UnicodeMap<T> that = new UnicodeMap<T>();
+        that.length = length;
+        that.transitions = (int[]) transitions.clone();
+        that.values = (T[]) values.clone();
+        that.availableValues = new LinkedHashSet<T>(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) {
+        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;
+        T[] oldvalues = values;
+        if (newLength > transitions.length) {
+            int allocation = (int) (GROWTH_GAP + (newLength * GROWTH_PERCENT) / 100);
+            transitions = new int[allocation];
+            values = (T[]) 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.
+     * All code that calls this MUST check for frozen first!
+     * @param codepoint
+     * @param value
+     * @return this, for chaining
+     */
+    private UnicodeMap _put(int codepoint, T 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 - 2 && areEqual(value, values[limitIndex]); // was -1
+
+                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 - 2 && areEqual(value, values[limitIndex]); // was -1
+
+            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, T value) {
+        // TODO optimize
+        for (int i = startCodePoint; i <= endCodePoint; ++i) {
+            _put(i, value);
+            if (ASSERTIONS) _checkInvariants();
+        }
+        return this;
+    }
+
+    /**
+     * Sets the codepoint value.
+     * @param codepoint
+     * @param value
+     * @return this (for chaining)
+     */
+    public UnicodeMap<T> put(int codepoint, T value) {
+        if (codepoint < 0 || codepoint > 0x10FFFF) {
+            throw new IllegalArgumentException("Codepoint out of range: " + codepoint);
+        }
+        _put(codepoint, value);
+        if (ASSERTIONS) _checkInvariants();
+        return this;
+    }
+
+    /**
+     * Sets the codepoint value.
+     * @param codepoint
+     * @param value
+     * @return this (for chaining)
+     */
+    public UnicodeMap<T> put(String string, T value) {
+        int v = UnicodeSet.getSingleCodePoint(string);
+        if (v == Integer.MAX_VALUE) {
+            if (value != null) {
+                if (stringMap == null) {
+                    stringMap = new TreeMap<String,T>();
+                }
+                stringMap.put(string, value);
+                staleAvailableValues = true;
+            } else if (stringMap != null) {
+                if (stringMap.remove(string) != null) {
+                    staleAvailableValues = true;
+                }
+            }
+            return this;
+        }
+        return put(v, value);
+    }
+
+    /**
+     * Adds bunch o' codepoints; otherwise like put.
+     * @param codepoints
+     * @param value
+     * @return this (for chaining)
+     */
+    public UnicodeMap<T> putAll(UnicodeSet codepoints, T value) {
+        UnicodeSetIterator it = new UnicodeSetIterator(codepoints);
+        while (it.nextRange()) {
+            _putAll(it.codepoint, it.codepointEnd, value);
+        }
+        for (String key : codepoints.strings()) {
+            put(key, value);
+        }
+        return this;
+    }
+
+    /**
+     * Adds bunch o' codepoints; otherwise like add.
+     * @param startCodePoint
+     * @param endCodePoint
+     * @param value
+     * @return this (for chaining)
+     */
+    public UnicodeMap<T> putAll(int startCodePoint, int endCodePoint, T value) {
+        if (locked) {
+            throw new UnsupportedOperationException("Attempt to modify locked object");
+        }
+        if (startCodePoint < 0 || endCodePoint > 0x10FFFF) {
+            throw new IllegalArgumentException("Codepoint out of range: "
+                    + Utility.hex(startCodePoint) + ".." + Utility.hex(endCodePoint));
+        }
+        return _putAll(startCodePoint, endCodePoint, value);
+    }
+
+    /**
+     * Add all the (main) values from a UnicodeMap
+     * @param unicodeMap the property to add to the map
+     * @return this (for chaining)
+     */
+    public UnicodeMap<T> putAll(UnicodeMap<T> unicodeMap) {    
+        for (int i = 0; i < unicodeMap.length; ++i) {
+            T value = unicodeMap.values[i];
+            if (value != null) {
+                _putAll(unicodeMap.transitions[i], unicodeMap.transitions[i+1]-1, value);
+            }
+            if (ASSERTIONS) _checkInvariants();
+        }
+        if (unicodeMap.stringMap != null && !unicodeMap.stringMap.isEmpty()) {
+            if (stringMap == null) {
+                stringMap = new TreeMap<String,T>();
+            }
+            stringMap.putAll(unicodeMap.stringMap);
+        }
+        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<T> putAllFiltered(UnicodeMap<T> prop, UnicodeSet filter) {
+        // TODO optimize
+        for (UnicodeSetIterator it = new UnicodeSetIterator(filter); it.next();) {
+            if (it.codepoint != UnicodeSetIterator.IS_STRING) {
+                T value = prop.getValue(it.codepoint);
+                if (value != null) {
+                    _put(it.codepoint, value);
+                }
+            }
+        }
+        // now do the strings
+        for (String key : filter.strings()) {
+            T value = prop.get(key);
+            if (value != null) {
+                put(key, value);
+            }
+        }
+        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<T> setMissing(T 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(keySet(null), value);
+        }
+    }
+    /**
+     * Returns the keyset consisting of all the keys that would produce the given value. Deposits into
+     * result if it is not null. Remember to clear if you just want
+     * the new values.
+     */
+    public UnicodeSet keySet(T 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);
+            } 
+        }
+        if (value != null && stringMap != null) {
+            for (String key : stringMap.keySet()) {
+                T newValue = stringMap.get(key);
+                if (value.equals(newValue)) {
+                    result.add((String)key);
+                }
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Returns the keyset consisting of all the keys that would produce the given value.
+     * the new values.
+     */
+    public UnicodeSet keySet(T value) {
+        return keySet(value,null);
+    }
+    
+    /**
+     * Returns the keyset consisting of all the keys that would produce (non-null) values.
+     */
+    public UnicodeSet keySet() {
+        UnicodeSet result = new UnicodeSet();
+        for (int i = 0; i < length - 1; ++i) {
+            if (values[i] != null) {
+                result.add(transitions[i], transitions[i+1]-1);
+            } 
+        }
+        if (stringMap != null) {
+            result.addAll(stringMap.keySet());
+        }
+        return result;
+    }
+
+    /**
+     * 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 <U extends Collection<T>> U values(U result) {
+        if (staleAvailableValues) {
+            // collect all the current values
+            // retain them in the availableValues
+            Set<T> temp = new HashSet<T>();
+            for (int i = 0; i < length - 1; ++i) {
+                if (values[i] != null) temp.add(values[i]);
+            }
+            availableValues.retainAll(temp);
+            if (stringMap != null) {
+                availableValues.addAll(stringMap.values());
+            }
+            staleAvailableValues = false;
+        }
+        if (result == null) {
+            result = (U) new ArrayList<T>(availableValues.size());
+        }
+        result.addAll(availableValues);
+        return result;
+    }
+
+    /**
+     * Convenience method
+     */
+    public Collection<T> values() {
+        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 T get(int codepoint) {
+        if (codepoint < 0 || codepoint > 0x10FFFF) {
+            throw new IllegalArgumentException("Codepoint out of range: " + codepoint);
+        }
+        return values[_findIndex(codepoint)];
+    }
+
+    /**
+     * Gets the value associated with a given code point.
+     * Returns null, if there is no such value.
+     * @param codepoint
+     * @return the value
+     */
+    public T get(String value) {
+        if (UTF16.hasMoreCodePointsThan(value, 1)) {
+            if (stringMap == null) {
+                return null;
+            }
+            return stringMap.get(value);
+        }
+        return getValue(UTF16.charAt(value, 0));
+    }
+
+
+    /**
+     * 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()
+     * TODO: extend to strings
+     * @param source
+     * @return
+     */
+    public String transform(String source) {
+        StringBuffer result = new StringBuffer();
+        int cp;
+        for (int i = 0; i < source.length(); i += UTF16.getCharCount(cp)) {
+            cp = UTF16.charAt(source, i);
+            T mResult = getValue(cp);
+            if (mResult != null) {
+                result.append(mResult);
+            } else {
+                UTF16.append(result, cp);
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * Used to add complex values, where the value isn't replaced but in some sense composed
+     * @author markdavis
+     */
+    public abstract static class Composer<T> {
+        /**
+         * This will be called with either a string or a code point. The result is the new value for that item.
+         * If the codepoint is used, the string is null; if the string is used, the codepoint is -1.
+         * @param a
+         * @param b
+         */
+        public abstract T compose(int codePoint, String string, T a, T b);
+    }
+
+    public UnicodeMap<T> composeWith(UnicodeMap<T> other, Composer<T> composer) {
+        for (T value : other.getAvailableValues()) {
+            UnicodeSet set = other.keySet(value);
+            composeWith(set, value, composer);
+        }
+        return this;
+    }
+
+    public UnicodeMap<T> composeWith(UnicodeSet set, T value, Composer<T> composer) {
+        for (UnicodeSetIterator it = new UnicodeSetIterator(set); it.next();) {
+            int i = it.codepoint;
+            if (i == UnicodeSetIterator.IS_STRING) {
+                String s = it.string;
+                T v1 = getValue(s);
+                T v3 = composer.compose(-1, s, v1, value);
+                if (v1 != v3 && (v1 == null || !v1.equals(v3))) {
+                    put(s, v3);
+                }                
+            } else {
+                T v1 = getValue(i);
+                T v3 = composer.compose(i, null, v1, value);
+                if (v1 != v3 && (v1 == null || !v1.equals(v3))) {
+                    put(i, v3);
+                }
+            }
+        }
+        return this;
+    }
+
+    public String toString() {
+        return toString(null);
+    }
+
+    public String toString(Comparator<T> collected) {
+        StringBuffer result = new StringBuffer();       
+        if (collected == null) {
+            for (int i = 0; i < length-1; ++i) {
+                T 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("=").append(value.toString()).append("\n");
+            }
+            if (stringMap != null) {
+                for (String s : stringMap.keySet()) {
+                    result.append(Utility.hex(s)).append("=").append(stringMap.get(s).toString()).append("\n");
+                }
+            }
+        } else {
+            Set<T> set = values(new TreeSet<T>(collected));
+            for (Iterator<T> it = set.iterator(); it.hasNext();) {
+                T value = it.next();
+                UnicodeSet s = keySet(value);
+                result.append(value).append("=").append(s.toString()).append("\n");
+            }
+        }
+        return result.toString();
+    }
+    /**
+     * @return Returns the errorOnReset value.
+     */
+    public boolean getErrorOnReset() {
+        return errorOnReset;
+    }
+    /**
+     * Puts the UnicodeMap into a state whereby new mappings are accepted, but changes to old mappings cause an exception.
+     * @param errorOnReset The errorOnReset to set.
+     */
+    public UnicodeMap<T> setErrorOnReset(boolean errorOnReset) {
+        this.errorOnReset = errorOnReset;
+        return this;
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.dev.test.util.Freezable#isFrozen()
+     */
+    public boolean isFrozen() {
+        // TODO Auto-generated method stub
+        return locked;
+    }
+
+    /* (non-Javadoc)
+     * @see com.ibm.icu.dev.test.util.Freezable#lock()
+     */
+    public UnicodeMap<T> freeze() {
+        locked = true;
+        return this;
+    }
+
+    /**
+     * Utility to find the maximal common prefix of two strings.
+     * TODO: fix supplemental support
+     */
+    static public int findCommonPrefix(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;
+    }
+
+    /**
+     * Get the number of ranges; used for getRangeStart/End. The ranges together cover all of the single-codepoint keys in the UnicodeMap. Other keys can be gotten with getStrings().
+     */
+    public int getRangeCount() {
+        return length-1;
+    }
+
+    /**
+     * Get the start of a range. All code points between start and end are in the UnicodeMap's keyset.
+     */
+    public int getRangeStart(int range) {
+        return transitions[range];
+    }
+
+    /**
+     * Get the start of a range. All code points between start and end are in the UnicodeMap's keyset.
+     */
+    public int getRangeEnd(int range) {
+        return transitions[range+1] - 1;
+    }
+
+    /**
+     * Get the value for the range.
+     */
+    public T getRangeValue(int range) {
+        return values[range];
+    }
+
+    /**
+     * Get the strings that are not in the ranges. Returns null if there are none.
+     * @return
+     */
+    public Set<String> getNonRangeStrings() {
+        if (stringMap == null || stringMap.isEmpty()) {
+            return null;
+        }
+        return Collections.unmodifiableSet(stringMap.keySet());
+    }
+
+    static final boolean DEBUG_WRITE = false;
+
+    /* (non-Javadoc)
+     * @see java.util.Map#containsKey(java.lang.Object)
+     */
+    public boolean containsKey(String key) {
+        return getValue(key) != null;
+    }
+
+    /* (non-Javadoc)
+     * @see java.util.Map#containsKey(java.lang.Object)
+     */
+    public boolean containsKey(int key) {
+        return getValue(key) != null;
+    }
+
+    /* (non-Javadoc)
+     * @see java.util.Map#containsValue(java.lang.Object)
+     */
+    public boolean containsValue(T value) {
+        // TODO Optimize
+        return getAvailableValues().contains(value);
+    }
+
+    /* (non-Javadoc)
+     * @see java.util.Map#isEmpty()
+     */
+    public boolean isEmpty() {
+        return size() == 0;
+    }
+
+    /* (non-Javadoc)
+     * @see java.util.Map#putAll(java.util.Map)
+     */
+    public UnicodeMap<T> putAll(Map<? extends String, ? extends T> map) {
+        for (String key : map.keySet()) {
+            put(key,map.get(key));
+        }
+        return this;
+    }
+
+    /**
+     * Utility for extracting map
+     */
+    public UnicodeMap<T> putAllIn(Map<? super String, ? super T> map) {
+        for (String key : keySet()) {
+            map.put(key, get(key));
+        }
+        return this;
+    }
+
+    /* (non-Javadoc)
+     * @see java.util.Map#remove(java.lang.Object)
+     */
+    public UnicodeMap<T> remove(String key) {
+        return put(key, null);
+    }
+
+    /* (non-Javadoc)
+     * @see java.util.Map#remove(java.lang.Object)
+     */
+    public UnicodeMap<T> remove(int key) {
+        return put(key, null);
+    }
+
+    /* (non-Javadoc)
+     * @see java.util.Map#size()
+     */
+    public int size() {
+        int result = stringMap.size();
+        for (int i = 0; i < length-1; ++i) {
+            T value = values[i];
+            if (value == null) continue;
+            result += transitions[i+1] - transitions[i];
+        }
+        return result;
+    }
+
+    /* (non-Javadoc)
+     * @see java.util.Map#entrySet()
+     */
+    public Iterable<Entry<String,T>> entrySet() {
+        return new EntrySetX();
+    }
+
+    private class EntrySetX implements Iterable<Entry<String, T>> {
+        public Iterator<Entry<String, T>> iterator() {
+            return new IteratorX();
+        }
+        public String toString() {
+            StringBuffer b = new StringBuffer();
+            for (Iterator it = iterator(); it.hasNext();) {
+                Object item = it.next();
+                b.append(item.toString()).append(' ');
+            }
+            return b.toString();
+        }
+    }
+
+    private class IteratorX implements Iterator<Entry<String, T>> {
+        Iterator<String> iterator = keySet().iterator();
+
+        /* (non-Javadoc)
+         * @see java.util.Iterator#hasNext()
+         */
+        public boolean hasNext() {
+            return iterator.hasNext();
+        }
+
+        /* (non-Javadoc)
+         * @see java.util.Iterator#next()
+         */
+        public Entry<String, T> next() {
+            String key = iterator.next();
+            return new ImmutableEntry(key, get(key));
+        }
+
+        /* (non-Javadoc)
+         * @see java.util.Iterator#remove()
+         */
+        public void remove() {
+            throw new UnsupportedOperationException();
+        }
+
+    }
+
+    /* (non-Javadoc)
+     * @see java.lang.Iterable#iterator()
+     */
+    public Iterator<String> iterator() {
+        return keySet().iterator();
+    }
+
+    /**
+     * Old form for compatibility
+     */
+    public T getValue(String key) {
+        return get(key);
+    }
+
+    /**
+     * Old form for compatibility
+     */
+    public T getValue(int key) {
+        // TODO Auto-generated method stub
+        return get(key);
+    }
+
+    /**
+     * Old form for compatibility
+     */
+    public Collection<T> getAvailableValues() {
+        return values();
+    }
+
+    /**
+     * Old form for compatibility
+     */
+    public <U extends Collection<T>> U getAvailableValues(U result) {
+        return values(result);
+    }
+
+    /**
+     * Old form for compatibility
+     */
+    public UnicodeSet getSet(T value) {
+        return keySet(value);
+    }
+
+    /**
+     * Old form for compatibility
+     */
+    public UnicodeSet getSet(T value, UnicodeSet result) {
+        return keySet(value, result);
+    }
+
+    // This is to support compressed serialization. It works; just commented out for now as we shift to Generics
+    // TODO Fix once generics are cleaned up.
+    //    // 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<T> 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<T> availableValues2) {
+    //        //if (true) return false;
+    //        for (Iterator<T> 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();
+    //        T[] 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 = (T[]) 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);
+    //        }
+    //    }
+}
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/util/UnicodeMapIterator.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/UnicodeMapIterator.java
new file mode 100644
index 0000000..752c670
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/util/UnicodeMapIterator.java
@@ -0,0 +1,276 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2009, International Business Machines Corporation and         *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.test.util;
+
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+
+
+import java.util.Iterator;
+import java.util.Set;
+
+import com.ibm.icu.text.UTF16;
+
+/**
+ * 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, use a loop like this:
+ * <pre>
+ * UnicodeSetIterator it = new UnicodeSetIterator(set);
+ * while (set.next()) {
+ *   if (set.codepoint != UnicodeSetIterator.IS_STRING) {
+ *     processCodepoint(set.codepoint);
+ *   } else {
+ *     processString(set.string);
+ *   }
+ * }
+ * </pre>
+ *
+ * <p>To iterate over code point ranges, use a loop like this:
+ * <pre>
+ * UnicodeSetIterator it = new UnicodeSetIterator(set);
+ * while (set.nextRange()) {
+ *   if (set.codepoint != UnicodeSetIterator.IS_STRING) {
+ *     processCodepointRange(set.codepoint, set.codepointEnd);
+ *   } else {
+ *     processString(set.string);
+ *   }
+ * }
+ * </pre>
+ * @author M. Davis
+ * @stable ICU 2.0
+ */
+public class UnicodeMapIterator<T> {
+
+    /**
+     * 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;
+
+    /**
+     * The value associated with this element or range.
+     */
+    public T value;
+
+    /**
+     * Create an iterator over the given set.
+     * @param set set to iterate over
+     * @stable ICU 2.0
+     */
+    public UnicodeMapIterator(UnicodeMap 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 UnicodeMapIterator() {
+        reset(new UnicodeMap());
+    }
+
+    /**
+     * 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;
+        }
+        while (range < endRange) {
+            if (loadRange(++range) == null) {
+                continue;
+            }
+            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;
+        }
+        while (range < endRange) {
+            if (loadRange(++range) == null) {
+                continue;
+            }
+            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 set the set to iterate over.
+     * @stable ICU 2.0
+     */
+    public void reset(UnicodeMap set) {
+        this.map = set;
+        reset();
+    }
+
+    /**
+     * Resets this iterator to the start of the set.
+     * @return 
+     * @stable ICU 2.0
+     */
+    public UnicodeMapIterator<T> reset() {
+        endRange = map.getRangeCount() - 1;
+        // both next*() methods will test: if (nextElement <= endElement)
+        // we set them to fail this test, which will cause them to load the first range
+        nextElement = 0; 
+        endElement = -1;
+        range = -1;
+
+        stringIterator = null;
+        Set<String> strings = map.getNonRangeStrings();
+        if (strings != null) {
+            stringIterator = strings.iterator();
+            if (!stringIterator.hasNext()) stringIterator = null;
+        }
+        value = null;
+        return this;
+    }
+
+    /**
+     * Gets the current string from the iterator. Only use after calling next(), not nextRange().
+     * @internal
+     */
+    public String getString() {
+        if (codepoint != IS_STRING) {
+            return UTF16.valueOf(codepoint);
+        }
+        return string;
+    }
+
+    // ======================= PRIVATES ===========================
+
+    private UnicodeMap<T> map;
+    private int endRange = 0;
+    private int range = 0;
+    private Iterator<String> stringIterator = null;
+    /**
+     * @internal
+     */
+    protected int endElement;
+    /**
+     * @internal
+     */
+    protected int nextElement;
+
+    /**
+     * Invariant: stringIterator is null when there are no (more) strings remaining
+     */
+
+    /**
+     * @return 
+     * @internal
+     */
+    protected T loadRange(int range) {
+        nextElement = map.getRangeStart(range);
+        endElement = map.getRangeEnd(range);
+        value = map.getRangeValue(range);
+        return value;
+    }
+}
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/util/UnicodeProperty.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/UnicodeProperty.java
new file mode 100644
index 0000000..408b8d9
--- /dev/null
+++ b/main/tests/translit/src/com/ibm/icu/dev/test/util/UnicodeProperty.java
@@ -0,0 +1,1253 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, 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.keySet(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.find();
+        }
+    }
+
+    public static abstract class BaseProperty extends UnicodeProperty {
+        private static final String[] NO_VALUES = {"No", "N", "F", "False"};
+
+        private static final String[] YES_VALUES = {"Yes", "Y", "T", "True"};
+
+        /**
+         * 
+         */
+        private static final String[][] YES_NO_ALIASES = new String[][] {YES_VALUES, NO_VALUES};
+
+        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);
+            if (propertyType == BINARY) {
+                addValueAliases(YES_NO_ALIASES, false);
+            }
+            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 addAliases(String valueAlias, String... aliases) {
+            _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);
+         }
+    }
+}
+
diff --git a/main/tests/translit/src/com/ibm/icu/dev/test/util/Visitor.java b/main/tests/translit/src/com/ibm/icu/dev/test/util/Visitor.java
new file mode 100644
index 0000000..7bcda0f
--- /dev/null
+++ b/main/tests/translit/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/main/tests/translit/translit-tests-build.launch b/main/tests/translit/translit-tests-build.launch
new file mode 100644
index 0000000..f910784
--- /dev/null
+++ b/main/tests/translit/translit-tests-build.launch
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j-translit-tests/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j-core-tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.running" value="true"/>
+<mapEntry key="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-translit-tests/build.xml}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/perf-tests/Dataset.pm b/perf-tests/Dataset.pm
new file mode 100644
index 0000000..1e08efc
--- /dev/null
+++ b/perf-tests/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/perf-tests/collationperf.pl b/perf-tests/collationperf.pl
new file mode 100755
index 0000000..2c568c8
--- /dev/null
+++ b/perf-tests/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/perf-tests/converterperf.pl b/perf-tests/converterperf.pl
new file mode 100755
index 0000000..eb4b311
--- /dev/null
+++ b/perf-tests/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/perf-tests/data/collation/TestNames_Asian.txt b/perf-tests/data/collation/TestNames_Asian.txt
new file mode 100644
index 0000000..d71245e
--- /dev/null
+++ b/perf-tests/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/perf-tests/data/collation/TestNames_Chinese.txt b/perf-tests/data/collation/TestNames_Chinese.txt
new file mode 100644
index 0000000..4945ad2
--- /dev/null
+++ b/perf-tests/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/perf-tests/data/collation/TestNames_Japanese.txt b/perf-tests/data/collation/TestNames_Japanese.txt
new file mode 100644
index 0000000..1ae1d8a
--- /dev/null
+++ b/perf-tests/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/perf-tests/data/collation/TestNames_Japanese_h.txt b/perf-tests/data/collation/TestNames_Japanese_h.txt
new file mode 100644
index 0000000..3bf407b
--- /dev/null
+++ b/perf-tests/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/perf-tests/data/collation/TestNames_Japanese_k.txt b/perf-tests/data/collation/TestNames_Japanese_k.txt
new file mode 100644
index 0000000..86502c9
--- /dev/null
+++ b/perf-tests/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/perf-tests/data/collation/TestNames_Korean.txt b/perf-tests/data/collation/TestNames_Korean.txt
new file mode 100644
index 0000000..e5731c8
--- /dev/null
+++ b/perf-tests/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/perf-tests/data/collation/TestNames_Latin.txt b/perf-tests/data/collation/TestNames_Latin.txt
new file mode 100644
index 0000000..2aa7549
--- /dev/null
+++ b/perf-tests/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/perf-tests/data/collation/TestNames_Russian.txt b/perf-tests/data/collation/TestNames_Russian.txt
new file mode 100644
index 0000000..cb23570
--- /dev/null
+++ b/perf-tests/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/perf-tests/data/collation/TestNames_SerbianSH.txt b/perf-tests/data/collation/TestNames_SerbianSH.txt
new file mode 100644
index 0000000..246f48e
--- /dev/null
+++ b/perf-tests/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/perf-tests/data/collation/TestNames_SerbianSR.txt b/perf-tests/data/collation/TestNames_SerbianSR.txt
new file mode 100644
index 0000000..28a6a81
--- /dev/null
+++ b/perf-tests/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/perf-tests/data/collation/TestNames_Simplified_Chinese.txt b/perf-tests/data/collation/TestNames_Simplified_Chinese.txt
new file mode 100644
index 0000000..c63d8d3
--- /dev/null
+++ b/perf-tests/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/perf-tests/data/collation/TestNames_Thai.txt b/perf-tests/data/collation/TestNames_Thai.txt
new file mode 100644
index 0000000..e978215
--- /dev/null
+++ b/perf-tests/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/perf-tests/data/conversion/arabic.txt b/perf-tests/data/conversion/arabic.txt
new file mode 100644
index 0000000..b9b3f27
--- /dev/null
+++ b/perf-tests/data/conversion/arabic.txt
@@ -0,0 +1,18 @@
+﻿  ما هي الشفرة الموحدة "يونِكود" ؟
+
+أساسًا، تتعامل الحواسيب فقط مع الأرقام، وتقوم بتخزين الأحرف والمحارف الأخرى بعد أن تُعطي رقما معينا لكل واحد منها. وقبل اختراع "يونِكود"، كان هناك مئات الأنظمة للتشفير وتخصيص هذه الأرقام للمحارف، ولم يوجد نظام تشفير واحد يحتوي على جميع المحارف الضرورية. وعلى سبيل المثال، فإن الاتحاد الأوروبي لوحده، احتوى العديد من الشفرات المختلفة ليغطي جميع اللغات المستخدمة في الاتحاد. وحتى لو اعتبرنا لغة واحدة، كاللغة الإنجليزية، فإن جدول شفرة واحد لم يكف لاستيعاب جميع الأحرف وعلامات الترقيم والرموز الفنية والعلمية الشائعة الاستعمال.
+
+ 
+
+وتجدر الملاحظة أن أنظمة التشفير المختلفة تتعارض مع بعضها البعض. وبعبارة أخرى، يمكن أن يستخدِم جدولي شفرة نفس الرقم لتمثيل محرفين مختلفين، أو رقمين مختلفين لتمثيل نفس المحرف. ولو أخذنا أي جهاز حاسوب، وبخاصة جهاز النادل (server)، فيجب أن تكون لديه القدرة على التعامل مع عدد كبير من الشفرات المختلفة، ويتم تصميمه على هذا الأساس. ومع ذلك، فعندما تمر البيانات عبر أنظمة مختلفة، توجد هناك خطورة لضياع أو تحريف بعض هذه البيانات.
+
+ 
+
+"يونِكود" تغير هذا كليـا !
+
+تخصص الشفرة الموحدة "يونِكود" رقما وحيدا لكل محرف في جميع اللغات العالمية، وذلك بغض النظر عن نوع الحاسوب أو البرامج المستخدمة. وقد تـم تبني مواصفة "يونِكود" مــن قبـل قادة الصانعين لأنظمة الحواسيب فـي العالم، مثل شركات آي.بي.إم. (IBM)، أبـل (APPLE)، هِيـْولِـت بـاكـرد (Hewlett-Packard) ، مايكروسوفت (Microsoft)، أوراكِـل (Oracle) ، صن (Sun) وغيرها. كما أن المواصفات والمقاييس الحديثة (مثل لغة البرمجة "جافا" "JAVA" ولغة "إكس إم إل" "XML" التي تستخدم لبرمجة الانترنيت) تتطلب استخدام "يونِكود". علاوة على ذلك ، فإن "يونِكود" هي الطـريـقـة الرسـمية لتطبيق المقيـاس الـعـالـمي إيزو ١٠٦٤٦  (ISO 10646) .
+
+ 
+
+إن بزوغ مواصفة "يونِكود" وتوفُّر الأنظمة التي تستخدمه وتدعمه، يعتبر من أهم الاختراعات الحديثة في عولمة البرمجيات لجميع اللغات في العالم. وإن استخدام "يونِكود" في عالم الانترنيت سيؤدي إلى توفير كبير مقارنة مع استخدام المجموعات التقليدية للمحارف المشفرة. كما أن استخدام "يونِكود" سيُمكِّن المبرمج من كتابة البرنامج مرة واحدة، واستخدامه على أي نوع من الأجهزة أو الأنظمة، ولأي لغة أو دولة في العالم أينما كانت، دون الحاجة لإعادة البرمجة أو إجراء أي تعديل. وأخيرا، فإن استخدام "يونِكود" سيمكن البيانات من الانتقال عبر الأنظمة والأجهزة المختلفة دون أي خطورة لتحريفها، مهما تعددت الشركات الصانعة للأنظمة واللغات، والدول التي تمر من خلالها هذه البيانات.
+
diff --git a/perf-tests/data/conversion/english.txt b/perf-tests/data/conversion/english.txt
new file mode 100644
index 0000000..bd4225f
--- /dev/null
+++ b/perf-tests/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/perf-tests/data/conversion/french.txt b/perf-tests/data/conversion/french.txt
new file mode 100644
index 0000000..46b7791
--- /dev/null
+++ b/perf-tests/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/perf-tests/data/conversion/greek.txt b/perf-tests/data/conversion/greek.txt
new file mode 100644
index 0000000..6aee92c
--- /dev/null
+++ b/perf-tests/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/perf-tests/data/conversion/hebrew.txt b/perf-tests/data/conversion/hebrew.txt
new file mode 100644
index 0000000..9d52a32
--- /dev/null
+++ b/perf-tests/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/perf-tests/data/conversion/hindi.txt b/perf-tests/data/conversion/hindi.txt
new file mode 100644
index 0000000..055f94d
--- /dev/null
+++ b/perf-tests/data/conversion/hindi.txt
@@ -0,0 +1,20 @@
+﻿यूनिकोड क्या है?
+
+यूनिकोड प्रत्येक अक्षर के लिए एक विशेष नम्बर प्रदान करता है,
+चाहे कोई भी प्लैटफॉर्म हो,
+चाहे कोई भी प्रोग्राम हो,
+चाहे कोई भी भाषा हो।
+
+कम्प्यूटर, मूल रूप से, नंबरों से सम्बंध रखते हैं। ये प्रत्येक अक्षर और वर्ण के लिए एक नंबर निर्धारित करके अक्षर और वर्ण संग्रहित करते हैं। यूनिकोड का आविष्कार होने से पहले, ऐसे नंबर देने के लिए सैंकडों विभिन्न संकेत लिपि प्रणालियां थीं। किसी एक संकेत लिपि में पर्याप्त अक्षर नहीं हो सकते हैं : उदाहरण के लिए, यूरोपिय संघ को अकेले ही, अपनी सभी भाषाऒं को कवर करने के लिए अनेक विभिन्न संकेत लिपियों की आवश्यकता होती है। अंग्रेजी जैसी भाषा के लिए भी, सभी अक्षरों, विरामचिन्हों और सामान्य प्रयोग के तकनीकी प्रतीकों हेतु एक ही संकेत लिपि पर्याप्त नहीं थी।
+
+ये संकेत लिपि प्रणालियां परस्पर विरोधी भी हैं। इसीलिए, दो संकेत लिपियां दो विभिन्न अक्षरों के लिए, एक ही नंबर प्रयोग कर सकती हैं, अथवा समान अक्षर के लिए विभिन्न नम्बरों का प्रयोग कर सकती हैं। किसी भी कम्प्यूटर (विशेष रूप से सर्वर) को विभिन्न संकेत लिपियां संभालनी पड़ती है; फिर भी जब दो विभिन्न संकेत लिपियों अथवा प्लैटफॉर्मों के बीच डाटा भेजा जाता है तो उस डाटा के हमेशा खराब होने का जोखिम रहता है।
+यूनिकोड से यह सब कुछ बदल रहा है!
+
+यूनिकोड, प्रत्येक अक्षर के लिए एक विशेष नंबर प्रदान करता है, चाहे कोई भी प्लैटफॉर्म हो, चाहे कोई भी प्रोग्राम हो, चाहे कोई भी भाषा हो। यूनिकोड स्टैंडर्ड को ऐपल, एच.पी., आई.बी.एम., जस्ट सिस्टम, माईक्रोसॉफ्ट, औरेकल, सैप, सन, साईबेस, यूनिसिस जैसी उद्योग की प्रमुख कम्पनियों और कई अन्य ने अपनाया है। यूनिकोड की आवश्यकता आधुनिक मानदंडों, जैसे एक्स.एम.एल., जावा, एकमा स्क्रिप्ट (जावा स्क्रिप्ट), एल.डी.ए.पी., कोर्बा 3.0, डब्ल्यू.एम.एल. के लिए होती है और यह आई.एस.ओ./आई.ई.सी. 10646 को लागू करने का अधिकारिक तरीका है। यह कई संचालन प्रणालियों, सभी आधुनिक ब्राउजरों और कई अन्य उत्पादों में होता है। यूनिकोड स्टैंडर्ड की उत्पति और इसके सहायक उपकरणों की उपलब्धता, हाल ही के अति महत्वपूर्ण विश्वव्यापी सॉफ्टवेयर टेक्नोलॉजी रुझानों में से हैं।
+
+यूनिकोड को ग्राहक-सर्वर अथवा बहु-आयामी उपकरणों और वेबसाइटों में शामिल करने से, परंपरागत उपकरणों के प्रयोग की अपेक्षा खर्च में अत्यधिक बचत होती है। यूनिकोड से एक ऐसा अकेला सॉफ्टवेयर उत्पाद अथवा अकेला वेबसाइट मिल जाता है, जिसे री-इंजीनियरिंग के बिना विभिन्न प्लैटफॉर्मों, भाषाओं और देशों में उपयोग किया जा सकता है। इससे डाटा को बिना किसी बाधा के विभिन्न प्रणालियों से होकर ले जाया जा सकता है।
+यूनिकोड कन्सॉर्शियम के बारे में
+
+यूनिकोड कन्सॉर्शियम, लाभ न कमाने वाला एक संगठन है जिसकी स्थापना यूनिकोड स्टैंडर्ड, जो आधुनिक सॉफ्टवेयर उत्पादों और मानकों में पाठ की प्रस्तुति को निर्दिष्ट करता है, के विकास, विस्तार और इसके प्रयोग को बढ़ावा देने के लिए की गई थी। इस कन्सॉर्शियम के सदस्यों में, कम्प्यूटर और सूचना उद्योग में विभिन्न निगम और संगठन शामिल हैं। इस कन्सॉर्शियम का वित्तपोषण पूर्णतः सदस्यों के शुल्क से किया जाता है। यूनिकोड कन्सॉर्शियम में सदस्यता, विश्व में कहीं भी स्थित उन संगठनों और व्यक्तियों के लिए खुली है जो यूनिकोड का समर्थन करते हैं और जो इसके विस्तार और कार्यान्वयन में सहायता करना चाहते हैं।
+
+अधिक जानकारी के लिए, शब्दावली, सैम्पल यूनिकोड-सक्षम उत्पाद, तकनीकी परिचय और उपयोगी स्रोत देखिए।
\ No newline at end of file
diff --git a/perf-tests/data/conversion/japanese.txt b/perf-tests/data/conversion/japanese.txt
new file mode 100644
index 0000000..b420ee4
--- /dev/null
+++ b/perf-tests/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/perf-tests/data/conversion/korean.txt b/perf-tests/data/conversion/korean.txt
new file mode 100644
index 0000000..18a55e1
--- /dev/null
+++ b/perf-tests/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/perf-tests/data/conversion/s-chinese.txt b/perf-tests/data/conversion/s-chinese.txt
new file mode 100644
index 0000000..50f9a46
--- /dev/null
+++ b/perf-tests/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/perf-tests/dateformatperf.pl b/perf-tests/dateformatperf.pl
new file mode 100755
index 0000000..f8a6cfa
--- /dev/null
+++ b/perf-tests/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/perf-tests/decimalformatperf.pl b/perf-tests/decimalformatperf.pl
new file mode 100755
index 0000000..ceb2b92
--- /dev/null
+++ b/perf-tests/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/perf-tests/normalizationperf_r_b.pl b/perf-tests/normalizationperf_r_b.pl
new file mode 100755
index 0000000..00b42cc
--- /dev/null
+++ b/perf-tests/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/perf-tests/normalizationperf_r_l.pl b/perf-tests/normalizationperf_r_l.pl
new file mode 100755
index 0000000..9130a11
--- /dev/null
+++ b/perf-tests/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/perf-tests/normperf.pl b/perf-tests/normperf.pl
new file mode 100755
index 0000000..60cf55b
--- /dev/null
+++ b/perf-tests/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/perf-tests/perldriver/Dataset.pm b/perf-tests/perldriver/Dataset.pm
new file mode 100644
index 0000000..ed99311
--- /dev/null
+++ b/perf-tests/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/perf-tests/perldriver/Format.pm b/perf-tests/perldriver/Format.pm
new file mode 100644
index 0000000..20d6075
--- /dev/null
+++ b/perf-tests/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/perf-tests/perldriver/Output.pm b/perf-tests/perldriver/Output.pm
new file mode 100644
index 0000000..741a25c
--- /dev/null
+++ b/perf-tests/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/perf-tests/perldriver/PerfFramework4j.pm b/perf-tests/perldriver/PerfFramework4j.pm
new file mode 100644
index 0000000..ac001a8
--- /dev/null
+++ b/perf-tests/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/perf-tests/rbbiperf_r.pl b/perf-tests/rbbiperf_r.pl
new file mode 100755
index 0000000..a75f0db
--- /dev/null
+++ b/perf-tests/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/perf-tests/resourcebundleperf.pl b/perf-tests/resourcebundleperf.pl
new file mode 100755
index 0000000..11bfa89
--- /dev/null
+++ b/perf-tests/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/perf-tests/src/com/ibm/icu/dev/test/perf/BreakIteratorPerformanceTest.java b/perf-tests/src/com/ibm/icu/dev/test/perf/BreakIteratorPerformanceTest.java
new file mode 100644
index 0000000..9ae22d1
--- /dev/null
+++ b/perf-tests/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/perf-tests/src/com/ibm/icu/dev/test/perf/CollationPerformanceTest.java b/perf-tests/src/com/ibm/icu/dev/test/perf/CollationPerformanceTest.java
new file mode 100644
index 0000000..8c62c7a
--- /dev/null
+++ b/perf-tests/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/perf-tests/src/com/ibm/icu/dev/test/perf/ConverterPerformanceTest.java b/perf-tests/src/com/ibm/icu/dev/test/perf/ConverterPerformanceTest.java
new file mode 100644
index 0000000..4aea48c
--- /dev/null
+++ b/perf-tests/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/perf-tests/src/com/ibm/icu/dev/test/perf/DateFormatPerformanceTest.java b/perf-tests/src/com/ibm/icu/dev/test/perf/DateFormatPerformanceTest.java
new file mode 100644
index 0000000..4e23127
--- /dev/null
+++ b/perf-tests/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/perf-tests/src/com/ibm/icu/dev/test/perf/DecimalFormatPerformanceTest.java b/perf-tests/src/com/ibm/icu/dev/test/perf/DecimalFormatPerformanceTest.java
new file mode 100644
index 0000000..505aa5a
--- /dev/null
+++ b/perf-tests/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/perf-tests/src/com/ibm/icu/dev/test/perf/NormalizerPerformanceTest.java b/perf-tests/src/com/ibm/icu/dev/test/perf/NormalizerPerformanceTest.java
new file mode 100644
index 0000000..e58a460
--- /dev/null
+++ b/perf-tests/src/com/ibm/icu/dev/test/perf/NormalizerPerformanceTest.java
@@ -0,0 +1,702 @@
+/*
+**********************************************************************
+* Copyright (c) 2002-2009, 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) {
+//        sun.text.Normalizer.normalize(line, compose
+//            ? sun.text.Normalizer.COMPOSE
+//            : sun.text.Normalizer.DECOMP, 0);
+        java.text.Normalizer.normalize(line, compose
+            ? java.text.Normalizer.Form.NFC
+            : java.text.Normalizer.Form.NFD);
+    }
+}
diff --git a/perf-tests/src/com/ibm/icu/dev/test/perf/PerfTest.java b/perf-tests/src/com/ibm/icu/dev/test/perf/PerfTest.java
new file mode 100644
index 0000000..b71e28c
--- /dev/null
+++ b/perf-tests/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/perf-tests/src/com/ibm/icu/dev/test/perf/RBBIPerf.java b/perf-tests/src/com/ibm/icu/dev/test/perf/RBBIPerf.java
new file mode 100644
index 0000000..7f03287
--- /dev/null
+++ b/perf-tests/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/perf-tests/src/com/ibm/icu/dev/test/perf/ResourceBundlePerf.java b/perf-tests/src/com/ibm/icu/dev/test/perf/ResourceBundlePerf.java
new file mode 100644
index 0000000..dd8c40f
--- /dev/null
+++ b/perf-tests/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/perf-tests/src/com/ibm/icu/dev/test/perf/UCharacterPerf.java b/perf-tests/src/com/ibm/icu/dev/test/perf/UCharacterPerf.java
new file mode 100644
index 0000000..4eab56b
--- /dev/null
+++ b/perf-tests/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/perf-tests/src/com/ibm/icu/dev/test/perf/UnicodeSetPerf.java b/perf-tests/src/com/ibm/icu/dev/test/perf/UnicodeSetPerf.java
new file mode 100644
index 0000000..32e990f
--- /dev/null
+++ b/perf-tests/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/perf-tests/ucharacterperf.pl b/perf-tests/ucharacterperf.pl
new file mode 100755
index 0000000..305583f
--- /dev/null
+++ b/perf-tests/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/perf-tests/ucharacterperf_r.pl b/perf-tests/ucharacterperf_r.pl
new file mode 100755
index 0000000..9de021c
--- /dev/null
+++ b/perf-tests/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/perf-tests/unicodesetperf.pl b/perf-tests/unicodesetperf.pl
new file mode 100755
index 0000000..276282c
--- /dev/null
+++ b/perf-tests/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/perf-tests/unicodesetperf_r.pl b/perf-tests/unicodesetperf_r.pl
new file mode 100755
index 0000000..6763365
--- /dev/null
+++ b/perf-tests/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/readme.html b/readme.html
new file mode 100644
index 0000000..f84435f
--- /dev/null
+++ b/readme.html
@@ -0,0 +1,983 @@
+<!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-2009, 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.4M2</h3>
+<hr size="2" width="100%">
+<p><b>Release Date</b><br>
+October 5, 2009<br>
+</p>
+
+<p><b>Note:</b> This is a development milestone release of ICU4J 4.4.
+Following contents may be out of date.
+</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>
+See the <a href="http://www.icu-project.org/download/latest_milestone.html">ICU 4.4 milestone download page</a> about
+new features in this release.  The list of API changes since the previous ICU4J release
+is available
+<a href="http://source.icu-project.org/repos/icu/icu4j/tags/milestone-4-3-2/APIChangeReport.html">here</a>.
+</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 5 or later releases.  The binary distribution of ICU4J
+jar file may have a problem with older JRE versions.
+We provide the ability to build a variant of ICU4J for JRE 1.3
+or 1.4.  If you want to use ICU4J running on JRE 1.4, you should
+build ICU4J libraries from the source package with JDK 1.4.
+With older JDK releases, some build targets may not work.
+
+<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="2" bgcolor="#FFFFFF">Sun Java SE</th>
+  <th colspan="2" 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.6.0</th>
+  <th bgcolor="#FFFFFF">1.5.0</th>
+</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="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly 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="#CCCCFF"><em><b>Reference platform</b></em></td>
+  <td align="center" bgcolor="#DDDDFF">Regularly 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="#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="#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">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly 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">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly 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="#FFFFFF">-</td>
+  <td align="center" bgcolor="#FFFFFF">-</td>
+</tr>
+<tr bgcolor="#FFFFFF">
+  <th>Solaris 10 (SPARC)</th>
+  <td align="center" bgcolor="#CCCCFF"><em><b>Reference platform</b></em></td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</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">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly 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="#CCCCFF"><em><b>Reference platform</b></em></td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+</tr>
+<tr>
+  <th bgcolor="#FFFFFF">Windows 2008 Server</th>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly tested</td>
+  <td align="center" bgcolor="#DDDDFF">Regularly 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>Bidirectional text manipulation</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>
+        <li>Currency</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/IndianCalendar.html">Indian</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 6.0.  (You can use any version of J2SE SDK 1.3 or newer,
+  but but J2SE SDK 5.0 is the minimum version 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.6.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.6.0
+     [echo] java version: 1.6.0
+     [echo] ant java version: 1.6
+     [echo] Apache Ant version 1.7.0 compiled on December 13 2006
+     [echo] ICU4JDEV with Windows XP 5.1 build 2600 Service Pack 3 on x86
+     [echo] clover initstring = '${clover.initstring}'
+     [echo] target runtime environment: JAVASE6
+     [echo] Initialized at 2009-04-25 at 05:25:03 EDT
+
+buildMangle:
+    [javac] Compiling 1 source file to C:\icu4j\classes
+
+initSrc:
+
+displayBuildEnvWarning:
+
+doMangle:
+     [echo] Running source code preprocessor [java com.ibm.icu.dev.tool.docs.Cod
+eMangler -dJAVASE6 -n @preprocessor.txt]
+
+init:
+
+coreData:
+     [copy] Copying 1 file to C:\icu4j\classes\com\ibm\icu
+
+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\i
+mpl\data
+
+core:
+    [javac] Compiling 351 source files to C:\icu4j\classes
+    [javac] Note: Some input files use or override a deprecated API.
+    [javac] Note: Recompile with -Xlint:deprecation for details.
+
+BUILD SUCCESSFUL
+Total time: 44 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".<br>
+<b>Note:</b> If you get a OutOfMemoryError when you are running <tt>"ant check"</tt>, you can <br>
+set the heap size of the jvm by setting the environment variable JVM_OPTIONS<br>
+to the appropriate java options.</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>icudt42b</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>icudt42b/coll</tt>,
+as a set of <tt>".res"</tt> files.</li>
+  <li>The <b>rule-based transliterator data</b> is under the directory
+<tt>icudt42b/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>icudt42b/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>icudt42b</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>icudt42b</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-7-0' tag</li>
+    <li>Update <I>$cldr_root</I>/tools to 'release-1-7-0' tag</li>
+    <li>Checkout ICU4C with tag 'release-4-2'</li>
+    <li>Checkout ICU4J with tag 'release-4-2'</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.2 includes time zone data version 2009g, 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.icu-project.org/">http://www.icu-project.org/</a>
+is the home page of International Components for Unicode development project</p>
+<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 hosted by IBM</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 investigate any bug reports or suggestions,
+and will use your feedback to help plan future releases.</p>
+<p>To submit comments, request features and report bugs,
+please see <a href="http://www.icu-project.org/bugs.html">ICU bug database
+information</a> or contact us through the <a
+ href="http://www.icu-project.org/contacts.html">ICU Support
+mailing list</a>.  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-2009 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/tools/build/.classpath b/tools/build/.classpath
new file mode 100644
index 0000000..4c0880b
--- /dev/null
+++ b/tools/build/.classpath
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JDK6"/>
+	<classpathentry kind="output" path="out/bin"/>
+</classpath>
diff --git a/tools/build/.project b/tools/build/.project
new file mode 100644
index 0000000..2f6f1f2
--- /dev/null
+++ b/tools/build/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>icu4j-build-tools</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/tools/build/.settings/org.eclipse.jdt.core.prefs b/tools/build/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..86e203c
--- /dev/null
+++ b/tools/build/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,330 @@
+#Fri Aug 28 16:06:12 EDT 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+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.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+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=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+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=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+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=ignore
+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.redundantSuperinterface=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.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+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.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
+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=120
+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_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not 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=120
+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/tools/build/.settings/org.eclipse.jdt.ui.prefs b/tools/build/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..f02d476
--- /dev/null
+++ b/tools/build/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,10 @@
+#Wed Jun 17 11:42:18 EDT 2009
+eclipse.preferences.version=1
+formatter_profile=_ICU4J Standard
+formatter_settings_version=11
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+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/tools/build/README.txt b/tools/build/README.txt
new file mode 100644
index 0000000..337f16b
--- /dev/null
+++ b/tools/build/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/tools/build/build-tools-build.launch b/tools/build/build-tools-build.launch
new file mode 100644
index 0000000..2ef397c
--- /dev/null
+++ b/tools/build/build-tools-build.launch
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j-build-tools/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j-build-tools"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.running" value="true"/>
+<mapEntry key="eclipse.pdebuild.templates" value="/D:/eclipse-SDK-3.4.2-win32/eclipse/plugins/org.eclipse.pde.build_3.4.1.R34x_v20081217/templates/"/>
+<mapEntry key="eclipse.home" value="D:\eclipse-SDK-3.4.2-win32\eclipse"/>
+<mapEntry key="eclipse.pdebuild.scripts" value="/D:/eclipse-SDK-3.4.2-win32/eclipse/plugins/org.eclipse.pde.build_3.4.1.R34x_v20081217/scripts/"/>
+<mapEntry key="eclipse.pdebuild.home" value="/D:/eclipse-SDK-3.4.2-win32/eclipse/plugins/org.eclipse.pde.build_3.4.1.R34x_v20081217/./"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-build-tools/build.xml}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/tools/build/build.properties b/tools/build/build.properties
new file mode 100644
index 0000000..570f2c9
--- /dev/null
+++ b/tools/build/build.properties
@@ -0,0 +1,5 @@
+#*******************************************************************************
+#* Copyright (C) 2009, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+shared.dir = ../../main/shared
diff --git a/tools/build/build.xml b/tools/build/build.xml
new file mode 100644
index 0000000..d236cd4
--- /dev/null
+++ b/tools/build/build.xml
@@ -0,0 +1,29 @@
+<!--
+*******************************************************************************
+* Copyright (C) 2009, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+-->
+<project name="build-tools" default="build" basedir=".">
+    <property file="build-local.properties"/>
+    <property file="build.properties"/>
+    <import file="${shared.dir}/build/common-targets.xml"/>
+
+    <path id="javac.classpathref">
+        <path refid="javac.classpathref.${ant.project.name}"/>
+    </path>
+    <property name="jar.file" value="${icu4j.build-tools.jar}"/>
+
+    <target name="build" depends="compile, copy, jar" description="Build the project"/>
+
+    <target name="build-all" depends="@build-all" description="Build the project including all dependencies"/>
+
+    <target name="clean" depends="@clean" description="Clean up the build outputs"/>
+
+    <target name="compile" depends="@compile" description="Compile java source files"/>
+
+    <target name="copy" depends="@copy" description="Copy non-java runtime files to the project's binary directory"/>
+
+    <target name="jar" depends="compile, copy, @jar" description="Create the project's jar file"/>
+
+</project>
\ No newline at end of file
diff --git a/tools/build/icu4j28.api.gz b/tools/build/icu4j28.api.gz
new file mode 100644
index 0000000..d95f52c
--- /dev/null
+++ b/tools/build/icu4j28.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:772a1e5195bbdcd2ac5fdf7153af71ca0a9dd934118bfbdb17a4388c4e3af6da
+size 19566
diff --git a/tools/build/icu4j30.api.gz b/tools/build/icu4j30.api.gz
new file mode 100644
index 0000000..e99db1a
--- /dev/null
+++ b/tools/build/icu4j30.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d79fcac17e325a019a52ffdfb8e1fdd8eca4079faf05149a8710751d77934a73
+size 20672
diff --git a/tools/build/icu4j32.api.gz b/tools/build/icu4j32.api.gz
new file mode 100644
index 0000000..9099c01
--- /dev/null
+++ b/tools/build/icu4j32.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:535e05f6624f372fd241b1f2e5d4feb90ccff5fdaf732eb0df52acac9f5d1f29
+size 21416
diff --git a/tools/build/icu4j34.api.gz b/tools/build/icu4j34.api.gz
new file mode 100644
index 0000000..dec27d2
--- /dev/null
+++ b/tools/build/icu4j34.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f807843ac5fb8b32a9b7f13a89779d3aa712521a9c35d23c2352bc7835ee9050
+size 23103
diff --git a/tools/build/icu4j341.api.gz b/tools/build/icu4j341.api.gz
new file mode 100644
index 0000000..d472615
--- /dev/null
+++ b/tools/build/icu4j341.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:044f24883f55361bf4d78e63191f1600d64453b7405f93978fbe63a5722fe1b3
+size 23106
diff --git a/tools/build/icu4j342.api.gz b/tools/build/icu4j342.api.gz
new file mode 100644
index 0000000..e7c9741
--- /dev/null
+++ b/tools/build/icu4j342.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f76f514fd1344a4216b240345dbf1e93625e7a3c9f40c9e75939954c19526462
+size 23134
diff --git a/tools/build/icu4j343.api.gz b/tools/build/icu4j343.api.gz
new file mode 100644
index 0000000..d0dad8f
--- /dev/null
+++ b/tools/build/icu4j343.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3af60a55b9cdc943952832f7a142eaeac21c51d4b16fb2cf977244553248fd08
+size 23132
diff --git a/tools/build/icu4j36.api.gz b/tools/build/icu4j36.api.gz
new file mode 100644
index 0000000..b8895dc
--- /dev/null
+++ b/tools/build/icu4j36.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a2a384467160d3d30872209c1b60eeaa233365d7a25d637218e580f740fbce45
+size 26926
diff --git a/tools/build/icu4j38.api.gz b/tools/build/icu4j38.api.gz
new file mode 100644
index 0000000..ebb90d1
--- /dev/null
+++ b/tools/build/icu4j38.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:db98896cfc89946ae3a58c1c36c1bba9ca44bc0814cc6592d1b665cf9839344f
+size 30589
diff --git a/tools/build/icu4j381.api.gz b/tools/build/icu4j381.api.gz
new file mode 100644
index 0000000..b5d6718
--- /dev/null
+++ b/tools/build/icu4j381.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1c59f72974592ea9bd43564f9018904a362a1692aa431164548c7cb758d06c55
+size 30708
diff --git a/tools/build/icu4j400.api.gz b/tools/build/icu4j400.api.gz
new file mode 100644
index 0000000..f4e7a40
--- /dev/null
+++ b/tools/build/icu4j400.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0b04f969c3f732686089229e08fbb3187e363a456311ab011c4e9555d003c97d
+size 32245
diff --git a/tools/build/icu4j401.api.gz b/tools/build/icu4j401.api.gz
new file mode 100644
index 0000000..0939969
--- /dev/null
+++ b/tools/build/icu4j401.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7cc77b7302c1258e5ca116a37061a10b0f3a7f1810213b48b5c7df25c193764e
+size 32248
diff --git a/tools/build/icu4j42.api.gz b/tools/build/icu4j42.api.gz
new file mode 100644
index 0000000..6682604
--- /dev/null
+++ b/tools/build/icu4j42.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ca8be4f31d1245ef194629faa635726407178b0e3c03cdb1acfecfd14fa477a
+size 33596
diff --git a/tools/build/icu4j421.api.gz b/tools/build/icu4j421.api.gz
new file mode 100644
index 0000000..5bcf605
--- /dev/null
+++ b/tools/build/icu4j421.api.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:72b71094b20d55c82d680b99b7a1f380198c003d45b56068798a2ed7aaed2522
+size 33598
diff --git a/tools/build/manifest.stub b/tools/build/manifest.stub
new file mode 100644
index 0000000..ba91aed
--- /dev/null
+++ b/tools/build/manifest.stub
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+
+Name: com/ibm/icu/dev/tool/docs
+Specification-Title: ICU for Java Doc Tools
+Specification-Version: @SPECVERSION@
+Specification-Vendor: ICU
+Implementation-Title: ICU for Java Doc Tools
+Implementation-Version: @IMPLVERSION@
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: @COPYRIGHT@
+
+Name: com/ibm/icu/dev/tool/index
+Specification-Title: ICU for Java Resource Index Generator
+Specification-Version: @SPECVERSION@
+Specification-Vendor: ICU
+Implementation-Title: ICU for Java Resource Index Generator
+Implementation-Version: @IMPLVERSION@
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: @COPYRIGHT@
diff --git a/tools/build/src/com/ibm/icu/dev/tool/docs/APIData.java b/tools/build/src/com/ibm/icu/dev/tool/docs/APIData.java
new file mode 100644
index 0000000..44165b4
--- /dev/null
+++ b/tools/build/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/tools/build/src/com/ibm/icu/dev/tool/docs/APIInfo.java b/tools/build/src/com/ibm/icu/dev/tool/docs/APIInfo.java
new file mode 100644
index 0000000..fde36e6
--- /dev/null
+++ b/tools/build/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/tools/build/src/com/ibm/icu/dev/tool/docs/CheckAPI.java b/tools/build/src/com/ibm/icu/dev/tool/docs/CheckAPI.java
new file mode 100644
index 0000000..6db3c34
--- /dev/null
+++ b/tools/build/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/tools/build/src/com/ibm/icu/dev/tool/docs/CheckTags.java b/tools/build/src/com/ibm/icu/dev/tool/docs/CheckTags.java
new file mode 100644
index 0000000..1dc9414
--- /dev/null
+++ b/tools/build/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/tools/build/src/com/ibm/icu/dev/tool/docs/CodeMangler.java b/tools/build/src/com/ibm/icu/dev/tool/docs/CodeMangler.java
new file mode 100644
index 0000000..ee50d03
--- /dev/null
+++ b/tools/build/src/com/ibm/icu/dev/tool/docs/CodeMangler.java
@@ -0,0 +1,783 @@
+/**
+*******************************************************************************
+* Copyright (C) 2004-2009, 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 boolean nonames;   // true if no names in header
+    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" +
+        "-n                     - do not put NAME/VALUE in header\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 if (arg.startsWith("-n")) {
+                        nonames = 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();
+        if (!nonames) {
+            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;
+                        if (header.length() > 0) {
+                            headerline += " ";
+                            headerline += header;
+                        }
+                        if (timestamp) {
+                            headerline += " ";
+                            headerline += String.valueOf(expectLastModified);
+                        }
+                        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;
+                    if (header.length() > 0) {
+                        headerline += " ";
+                        headerline += header;
+                    }
+                    if (timestamp) {
+                        headerline += " ";
+                        headerline += String.valueOf(outModTime);
+                    }
+                    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/tools/build/src/com/ibm/icu/dev/tool/docs/Deprecator.java b/tools/build/src/com/ibm/icu/dev/tool/docs/Deprecator.java
new file mode 100644
index 0000000..330f7ff
--- /dev/null
+++ b/tools/build/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/tools/build/src/com/ibm/icu/dev/tool/docs/GatherAPIData.java b/tools/build/src/com/ibm/icu/dev/tool/docs/GatherAPIData.java
new file mode 100644
index 0000000..418ffa5
--- /dev/null
+++ b/tools/build/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/tools/build/src/com/ibm/icu/dev/tool/docs/ICUJDKCompare.java b/tools/build/src/com/ibm/icu/dev/tool/docs/ICUJDKCompare.java
new file mode 100644
index 0000000..c39ae77
--- /dev/null
+++ b/tools/build/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/tools/build/src/com/ibm/icu/dev/tool/docs/ICUTaglet.java b/tools/build/src/com/ibm/icu/dev/tool/docs/ICUTaglet.java
new file mode 100644
index 0000000..b0d80b8
--- /dev/null
+++ b/tools/build/src/com/ibm/icu/dev/tool/docs/ICUTaglet.java
@@ -0,0 +1,240 @@
+/**
+*******************************************************************************
+* Copyright (C) 2002-2009, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*/
+
+package com.ibm.icu.dev.tool.docs;
+
+import com.sun.javadoc.*;
+// 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;
+
+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);
+        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;
+    }
+
+    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;
+    }
+
+    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>";
+            }
+        }
+    }
+
+    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/tools/build/src/com/ibm/icu/dev/tool/docs/ReportAPI.java b/tools/build/src/com/ibm/icu/dev/tool/docs/ReportAPI.java
new file mode 100644
index 0000000..26fe8e9
--- /dev/null
+++ b/tools/build/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/tools/build/src/com/ibm/icu/dev/tool/docs/SwatDeprecated.java b/tools/build/src/com/ibm/icu/dev/tool/docs/SwatDeprecated.java
new file mode 100644
index 0000000..c45c4ec
--- /dev/null
+++ b/tools/build/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/tools/build/src/com/ibm/icu/dev/tool/index/IndexGenerator.java b/tools/build/src/com/ibm/icu/dev/tool/index/IndexGenerator.java
new file mode 100644
index 0000000..5bf09b7
--- /dev/null
+++ b/tools/build/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/tools/misc/.classpath b/tools/misc/.classpath
new file mode 100644
index 0000000..31a873c
--- /dev/null
+++ b/tools/misc/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-core"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-core-tests"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-translit-tests"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-translit"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/icu4j-collate"/>
+	<classpathentry kind="output" path="out/bin"/>
+</classpath>
diff --git a/tools/misc/.project b/tools/misc/.project
new file mode 100644
index 0000000..16a37bc
--- /dev/null
+++ b/tools/misc/.project
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>icu4j-tools</name>
+	<comment></comment>
+	<projects>
+		<project>icu4j-core</project>
+		<project>icu4j-core-tests</project>
+		<project>icu4j-shared</project>
+		<project>icu4j-test-framework</project>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/tools/misc/.settings/org.eclipse.jdt.core.prefs b/tools/misc/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..df14b15
--- /dev/null
+++ b/tools/misc/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,330 @@
+#Fri Aug 28 16:04:56 EDT 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+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.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=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=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+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=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+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=ignore
+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.redundantSuperinterface=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.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+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.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.5
+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=120
+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_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not 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=120
+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/tools/misc/.settings/org.eclipse.jdt.ui.prefs b/tools/misc/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..e38c4c3
--- /dev/null
+++ b/tools/misc/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,10 @@
+#Wed Jun 17 11:42:31 EDT 2009
+eclipse.preferences.version=1
+formatter_profile=_ICU4J Standard
+formatter_settings_version=11
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+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/tools/misc/build.properties b/tools/misc/build.properties
new file mode 100644
index 0000000..570f2c9
--- /dev/null
+++ b/tools/misc/build.properties
@@ -0,0 +1,5 @@
+#*******************************************************************************
+#* Copyright (C) 2009, International Business Machines Corporation and         *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+shared.dir = ../../main/shared
diff --git a/tools/misc/build.xml b/tools/misc/build.xml
new file mode 100644
index 0000000..ddd98b6
--- /dev/null
+++ b/tools/misc/build.xml
@@ -0,0 +1,29 @@
+<!--
+*******************************************************************************
+* Copyright (C) 2009, International Business Machines Corporation and         *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+-->
+<project name="tools" default="build" basedir=".">
+    <property file="build-local.properties"/>
+    <property file="build.properties"/>
+    <import file="${shared.dir}/build/common-targets.xml"/>
+
+    <path id="javac.classpathref">
+        <path refid="javac.classpathref.${ant.project.name}"/>
+    </path>
+    <property name="jar.file" value="${icu4j.tools.jar}"/>
+
+    <target name="build" depends="compile, copy, jar" description="Build the project"/>
+
+    <target name="build-all" depends="@build-all" description="Build the project including all dependencies"/>
+
+    <target name="clean" depends="@clean" description="Clean up the build outputs"/>
+
+    <target name="compile" depends="@compile" description="Compile java source files"/>
+
+    <target name="copy" depends="@copy" description="Copy non-java runtime files to the project's binary directory"/>
+
+    <target name="jar" depends="compile, copy, @jar" description="Create the project's jar file"/>
+
+</project>
\ No newline at end of file
diff --git a/tools/misc/manifest.stub b/tools/misc/manifest.stub
new file mode 100644
index 0000000..ef02f86
--- /dev/null
+++ b/tools/misc/manifest.stub
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+
+Name: com/ibm/icu/dev/tool
+Specification-Title: ICU for Java Tools
+Specification-Version: @SPECVERSION@
+Specification-Vendor: ICU
+Implementation-Title: ICU for Java Tools
+Implementation-Version: @IMPLVERSION@
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: @COPYRIGHT@
diff --git a/tools/misc/src/com/ibm/icu/dev/tool/UOption.java b/tools/misc/src/com/ibm/icu/dev/tool/UOption.java
new file mode 100644
index 0000000..45a1269
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/mbcs/BIG5Tool.java b/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/mbcs/BIG5Tool.java
new file mode 100644
index 0000000..540e636
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/mbcs/EUCTool.java b/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/mbcs/EUCTool.java
new file mode 100644
index 0000000..b6aff25
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/Checker.java b/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/Checker.java
new file mode 100644
index 0000000..d3a30bc
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/InputFile.java b/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/InputFile.java
new file mode 100644
index 0000000..1258f58
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramList.java b/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramList.java
new file mode 100644
index 0000000..e285841
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramParser.java b/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/NGramParser.java
new file mode 100644
index 0000000..d0f7b31
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/StatisticsTool.java b/tools/misc/src/com/ibm/icu/dev/tool/charsetdet/sbcs/StatisticsTool.java
new file mode 100644
index 0000000..26ffe1c
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/cldr/CheckSystemFonts.java b/tools/misc/src/com/ibm/icu/dev/tool/cldr/CheckSystemFonts.java
new file mode 100644
index 0000000..09b20e2
--- /dev/null
+++ b/tools/misc/src/com/ibm/icu/dev/tool/cldr/CheckSystemFonts.java
@@ -0,0 +1,651 @@
+/*
+ **********************************************************************
+ * Copyright (c) 2009, Google, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ **********************************************************************
+ * Author: Mark Davis
+ **********************************************************************
+ */
+package com.ibm.icu.dev.tool.cldr;
+import java.awt.Font;
+import java.awt.GraphicsEnvironment;
+import java.awt.Shape;
+import java.awt.font.FontRenderContext;
+import java.awt.font.GlyphVector;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.PathIterator;
+import java.awt.geom.Rectangle2D;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import com.ibm.icu.dev.test.util.BagFormatter;
+import com.ibm.icu.dev.test.util.TransliteratorUtilities;
+import com.ibm.icu.dev.test.util.UnicodeMap;
+import com.ibm.icu.dev.test.util.UnicodeMapIterator;
+import com.ibm.icu.dev.test.util.Tabber.HTMLTabber;
+import com.ibm.icu.dev.test.util.UnicodeMap.Composer;
+import com.ibm.icu.dev.test.util.XEquivalenceClass.SetMaker;
+import com.ibm.icu.impl.Row;
+import com.ibm.icu.impl.Utility;
+import com.ibm.icu.impl.Row.R2;
+import com.ibm.icu.lang.UCharacter;
+import com.ibm.icu.lang.UScript;
+import com.ibm.icu.text.Collator;
+import com.ibm.icu.text.Normalizer;
+import com.ibm.icu.text.UTF16;
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.text.UnicodeSetIterator;
+
+
+public class CheckSystemFonts {
+    
+    static String outputDirectoryName;
+    static Set<String> SKIP_SHAPES = new HashSet<String>();
+    
+    public static void main(String[] args) throws IOException {
+        System.out.println("Arguments:\t" + Arrays.asList(args));
+        if (args.length < 2) {
+            throw new IllegalArgumentException("Need command-line args:" +
+            		"\n\t\tfont-name-regex" +
+                    "\n\t\toutput-directory"
+            		);
+        }
+        Matcher nameMatcher = Pattern.compile(args[0], Pattern.CASE_INSENSITIVE).matcher("");
+        outputDirectoryName = args[1].trim();
+        File outputDirectory = new File(outputDirectoryName);
+        if (!outputDirectory.isDirectory()) {
+            throw new IllegalArgumentException("2nd arg must be valid directory");
+        }
+        loadSkipShapes();
+
+        Map<UnicodeSet,Set<String>> data = new TreeMap<UnicodeSet, Set<String>>();
+        Map<String, Font> fontMap = new TreeMap<String, Font>();
+        getFontData(nameMatcher, data, fontMap);
+        
+        showInvisibles();
+        showSameGlyphs();
+
+        UnicodeMap<Set<String>> map = showEquivalentCoverage(data);
+
+        showRawCoverage(data);
+
+        Map<Set<String>, String> toShortName = showRawCoverage(map);
+
+        showFullCoverage(map, toShortName);
+    }
+
+    private static void loadSkipShapes() {
+        try {
+            BufferedReader in = BagFormatter.openUTF8Reader(outputDirectoryName, "skip_fonts.txt");
+            while (true) {
+                String line = in.readLine();
+                if (line == null) break;
+                String[] fonts = line.trim().split("\\s+");
+                for (String font : fonts) {
+                    SKIP_SHAPES.add(font);
+                }
+            }
+            in.close();
+        } catch (IOException e) {
+            System.err.println("Couldn't open:\t" + outputDirectoryName + "/" + "skip_fonts.txt");
+        }
+    }
+
+
+    private static final Collator English = Collator.getInstance();
+
+    static {
+        English.setStrength(Collator.SECONDARY);
+    }
+
+    public static final UnicodeSet DONT_CARE = new UnicodeSet("[[:cn:][:co:][:cs:]]").freeze();
+    public static final UnicodeSet COVERAGE = new UnicodeSet(DONT_CARE).complement().freeze();
+
+    private static final Comparator<String> SHORTER_FIRST = new Comparator<String>() {
+        public int compare(String n1, String n2) {
+            int result = n1.length() - n2.length();
+            if (result != 0) return result;
+            return n1.compareTo(n2);
+        }
+    };
+
+    private static final Comparator<UnicodeSet> LONGER_SET_FIRST = new Comparator<UnicodeSet>() {
+        public int compare(UnicodeSet n1, UnicodeSet n2) {
+            int result = n1.size() - n2.size();
+            if (result != 0) return -result;
+            return n1.compareTo(n2);
+        }
+    };
+
+    private static final Comparator<Collection> SHORTER_COLLECTION_FIRST = new Comparator<Collection>() {
+        public int compare(Collection n1, Collection n2) {
+            int result = n1.size() - n2.size();
+            if (result != 0) return result;
+            return UnicodeSet.compare(n1, n2);
+        }
+    };
+
+    private static final HashSet SKIP_TERMS = new HashSet(Arrays.asList("black", "blackitalic", "bold", "boldit", "bolditalic", "bolditalicmt", "boldmt",
+            "boldob", "boldoblique", "boldslanted", "book", "bookitalic", "condensed", "condensedblack", "condensedbold", "condensedextrabold",
+            "condensedlight", "condensedmedium", "extracondensed", "extralight", "heavy", "italic", "italicmt", "light", "lightit", "lightitalic", "medium",
+            "mediumitalic", "oblique", "regular", "roman", "semibold", "semibolditalic", "shadow", "slanted", "ultrabold", "ultralight", "ultralightitalic"
+    ));
+
+    private static Composer<Set<String>> composer = new Composer<Set<String>>() {
+        Map<R2<Set<String>, Set<String>>,Set<String>> cache = new HashMap<R2<Set<String>, Set<String>>,Set<String>>();
+        public Set<String> compose(int codePoint, String string, Set<String> a, Set<String> b) {
+            return a == null ? b
+                    : b == null ? null 
+                            : intern(a,b);
+        }
+        private Set<String> intern(Set<String> a, Set<String> b) {
+            R2<Set<String>, Set<String>> row = Row.of(a, b);
+            Set<String> result = cache.get(row);
+            if (result == null) {
+                result = new TreeSet<String>(English);
+                result.addAll(a);
+                result.addAll(b);
+                cache.put(row, result);
+            }
+            return result;
+        }
+    };
+
+
+    private static void showFullCoverage(UnicodeMap<Set<String>> map, Map<Set<String>, String> toShortName) throws IOException {
+        System.out.println("\n***COVERAGE:\t" + map.keySet().size() + "\n");
+        PrintWriter out = BagFormatter.openUTF8Writer(outputDirectoryName, "coverage.txt");
+
+        for (UnicodeMapIterator<String> it = new UnicodeMapIterator<String>(map); it.nextRange();) {
+            String codes = "U+" + Utility.hex(it.codepoint);
+            String names = UCharacter.getExtendedName(it.codepoint);
+            if (it.codepointEnd != it.codepoint) {
+                codes += "..U+" + Utility.hex(it.codepointEnd);
+                names += ".." + UCharacter.getExtendedName(it.codepointEnd);
+            }
+            out.println(codes + "\t" + toShortName.get(map.get(it.codepoint)) + "\t" + names);
+        }
+
+        UnicodeSet missing = new UnicodeSet(COVERAGE).removeAll(map.keySet());
+        out.println("\nMISSING:\t" + missing.size() + "\n");
+
+        UnicodeMap<String> missingMap = new UnicodeMap<String>();
+        for (UnicodeSetIterator it = new UnicodeSetIterator(missing); it.next();) {
+            missingMap.put(it.codepoint, UScript.getName(UScript.getScript(it.codepoint)) + "-" + getShortAge(it.codepoint));
+        }
+
+        Set<String> sorted = new TreeSet<String>(English);
+        sorted.addAll(missingMap.values());
+        for (String value : sorted) {
+            UnicodeSet items = missingMap.getSet(value);
+            for (UnicodeSetIterator it = new UnicodeSetIterator(items); it.nextRange();) {
+                String codes = "U+" + Utility.hex(it.codepoint);
+                String names = UCharacter.getExtendedName(it.codepoint);
+                if (it.codepointEnd != it.codepoint) {
+                    codes += "..U+" + Utility.hex(it.codepointEnd);
+                    names += ".." + UCharacter.getExtendedName(it.codepointEnd);
+                }
+                out.println(codes + "\t" + value + "\t" + names);
+            }
+            out.println();
+        }
+        out.close();
+    }
+
+    private static Map<Set<String>, String> showRawCoverage(UnicodeMap<Set<String>> map) throws IOException {
+        System.out.println("\n***COMBO NAMES\n");
+        PrintWriter out = BagFormatter.openUTF8Writer(outputDirectoryName, "combo_names.txt");
+
+        int count = 0;
+        Map<Set<String>, String> toShortName = new HashMap<Set<String>, String>();
+        TreeSet<Set<String>> sortedValues = new TreeSet<Set<String>>(SHORTER_COLLECTION_FIRST);
+        sortedValues.addAll(map.values());
+        for (Set<String> value : sortedValues) {
+            String shortName = "combo" + count++;
+            Set<String> contained = getLargestContained(value, toShortName.keySet());
+            String valueName;
+            if (contained != null) {
+                Set<String> remainder = new TreeSet<String>();
+                remainder.addAll(value);
+                remainder.removeAll(contained);
+                valueName = toShortName.get(contained) + " + " + remainder;
+            } else {
+                valueName = value.toString();
+            }
+            toShortName.put(value, shortName);
+            out.println(shortName + "\t" + valueName);
+        }
+        out.close();
+        return toShortName;
+    }
+
+    private static void showRawCoverage(Map<UnicodeSet, Set<String>> data) throws IOException {
+        System.out.println("\n***RAW COVERAGE (bridging unassigned)\n");
+        PrintWriter out = BagFormatter.openUTF8Writer(outputDirectoryName, "raw_coverage.txt");
+
+        for (UnicodeSet s : data.keySet()) {
+            Set<String> nameSet = data.get(s);
+            String name = nameSet.iterator().next();
+            UnicodeSet bridged = new UnicodeSet(s).addBridges(DONT_CARE);
+            out.println(name + "\t" + s.size() + "\t" + bridged);
+        }
+        out.close();
+    }
+
+    private static UnicodeMap<Set<String>> showEquivalentCoverage(Map<UnicodeSet, Set<String>> data) throws IOException {
+        System.out.println("\n***EQUIVALENT COVERAGE\n");
+        PrintWriter out = BagFormatter.openUTF8Writer(outputDirectoryName, "equiv_coverage.txt");
+
+        UnicodeMap<Set<String>> map = new UnicodeMap<Set<String>>();
+
+        Map<String,Set<String>> nameToSingleton = new HashMap<String,Set<String>>();
+
+        for (UnicodeSet s : data.keySet()) {
+            Set<String> nameSet = data.get(s);
+            String name = nameSet.iterator().next();
+            //System.out.println(s);
+            Set<String> temp2 = nameToSingleton.get(name);
+            if (temp2 == null) {
+                temp2 = new TreeSet<String>(English);
+                temp2.add(name);
+            }
+            map.composeWith(s, temp2, composer);
+            if (nameSet.size() > 1) {
+                TreeSet<String> temp = new TreeSet<String>(English);
+                temp.addAll(nameSet);
+                temp.remove(name);
+                out.println(name + "\t" + temp);
+            }
+        }
+        out.close();
+        return map;
+    }
+
+    private static void showSameGlyphs() throws IOException {
+        System.out.println("\n***Visual Equivalences");
+        PrintWriter out = BagFormatter.openUTF8Writer(outputDirectoryName, "same_glyphs.txt");
+        PrintWriter out2 = BagFormatter.openUTF8Writer(outputDirectoryName, "same_glyphs.html");
+        out2.println("<html><head>");
+        out2.println("<meta content=\"text/html; charset=utf-8\" http-equiv=Content-Type></HEAD>");
+        out2.println("<link rel='stylesheet' href='index.css' type='text/css'>");
+        out2.println("</head><body><table>");
+        HTMLTabber tabber = new HTMLTabber();
+
+        out2.println(tabber.process("Code1\tCode2\tNFC1\tNFC1\tCh1\tCh1\tCh1/F\tCh2/F\tName1\tName2\tFonts"));
+        tabber.setParameters(0, "class='c'");
+        tabber.setParameters(1, "class='c'");
+        tabber.setParameters(2, "class='nf'");
+        tabber.setParameters(3, "class='nf'");
+        tabber.setParameters(4, "class='p'");
+        tabber.setParameters(5, "class='p'");
+        //tabber.setParameters(6, "class='q'");
+        //tabber.setParameters(7, "class='q'");
+        tabber.setParameters(8, "class='n'");
+        tabber.setParameters(9, "class='n'");
+        tabber.setParameters(10, "class='f'");
+
+        for (R2<Integer,Integer> sample : equivalences.keySet()) {
+            final Set<String> reasonSet = equivalences.get(sample);
+            String reasons = reasonSet.toString();
+            if (reasons.length() > 100) reasons = reasons.substring(0,100) + "...";
+            final Integer codepoint1 = sample.get0();
+            final Integer codepoint2 = sample.get1();
+            
+            out.println("U+" + Utility.hex(codepoint1) + "\t" + "U+" + Utility.hex(codepoint2)
+                    + "\t" + showNfc(codepoint1) + "\t" + showNfc(codepoint2)
+                    + "\t" + showChar(codepoint1, false) + "\t" + showChar(codepoint2, false)
+                    + "\t" + UCharacter.getExtendedName(codepoint1) + "\t" + UCharacter.getExtendedName(codepoint2)
+                    + "\t" + reasons);
+            String line = "U+" + Utility.hex(codepoint1) + "\t" + "U+" + Utility.hex(codepoint2)
+                    + "\t" + showNfc(codepoint1) + "\t" + showNfc(codepoint2)
+                    + "\t" + showChar(codepoint1, false) + "\t" + showChar(codepoint2, true)
+                    + "\t" + showChar(codepoint1, false) + "\t" + showChar(codepoint2, true)
+                    + "\t" + UCharacter.getExtendedName(codepoint1) + "\t" + UCharacter.getExtendedName(codepoint2)
+                    + "\t" + reasons;
+            
+            String fonts = "class='q' style='font-family:";
+            int maxCount = 5;
+            for (String font : reasonSet) {
+                if (maxCount != 5) {
+                    fonts += ",";
+                }
+                fonts += font;
+                --maxCount;
+                if (maxCount <= 0) break;
+            }
+            fonts += "'";
+            tabber.setParameters(6, fonts);
+            tabber.setParameters(7, fonts);
+            out2.println(tabber.process(line));
+        }
+        out2.println("</table></body>");
+        out2.close();
+        out.close();
+    }
+
+    private static void showInvisibles() throws IOException {
+        System.out.println("\n***Invisibles Equivalences");
+        PrintWriter out = BagFormatter.openUTF8Writer(outputDirectoryName, "invisibles.txt");
+        for (String sample : invisibles) {
+            String reasons = invisibles.get(sample).toString();
+            if (reasons.length() > 100) reasons = reasons.substring(0,100) + "...";
+            int codepoint = sample.codePointAt(0);
+            out.println("U+" + Utility.hex(sample)
+                    + "\t" + showChar(codepoint, false)
+                    + "\t" + showNfc(codepoint)
+                    + "\t" + UCharacter.getExtendedName(codepoint)
+                    + "\t" + reasons);
+
+        }
+        out.close();
+    }
+
+    private static void getFontData(Matcher nameMatcher, Map<UnicodeSet, Set<String>> data, Map<String, Font> fontMap) {
+        GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
+        Font[] fonts = env.getAllFonts();
+        for (Font font : fonts) {
+            if (!font.isPlain()) {
+                continue;
+            }
+            String name = font.getName();
+            int lastDash = name.lastIndexOf('-');
+            String term = lastDash < 0 ? "" : name.substring(lastDash+1).toLowerCase();
+            if (SKIP_TERMS.contains(term)) {
+                continue;
+            }
+            if (nameMatcher != null && !nameMatcher.reset(name).find()) {
+                continue;
+            }
+            fontMap.put(name,font);
+        }
+        for (String name : fontMap.keySet()) {
+            Font font = fontMap.get(name);
+            System.out.println(name);
+            UnicodeSet coverage = getCoverage(font);
+            Set<String> sameFonts = data.get(coverage);
+            if (sameFonts == null) {
+                data.put(coverage, sameFonts = new TreeSet<String>(SHORTER_FIRST));
+            } else {
+                System.out.println("\tNote: same coverage as " + sameFonts.iterator().next());
+            }
+            sameFonts.add(name);
+        }
+    }
+    
+    static Comparator<Integer> NFCLower = new Comparator<Integer>() {
+        public int compare(Integer o1, Integer o2) {
+            boolean n1 = Normalizer.isNormalized(o1, Normalizer.NFC, 0);
+            boolean n2 = Normalizer.isNormalized(o2, Normalizer.NFC, 0);
+            if (n1 != n2) return n1 ? -1 : 1;
+            n1 = Normalizer.isNormalized(o1, Normalizer.NFKC, 0);
+            n2 = Normalizer.isNormalized(o2, Normalizer.NFKC, 0);
+            if (n1 != n2) return n1 ? -1 : 1;
+            return o1.compareTo(o2);
+        } 
+    };
+    
+    static Comparator<R2<Integer,Integer>> NFCLowerR2 = new Comparator<R2<Integer,Integer>>() {
+        public int compare(R2<Integer, Integer> o1, R2<Integer, Integer> o2) {
+            int diff = NFCLower.compare(o1.get0(), o2.get0());
+            if (diff != 0) return diff;
+            return NFCLower.compare(o1.get1(), o2.get1());
+        }
+    };
+
+    private static String showNfc(int codepoint) {
+        return Normalizer.isNormalized(codepoint, Normalizer.NFC, 0) ? "" 
+                : Normalizer.isNormalized(codepoint, Normalizer.NFKC, 0) ? "!C" : "!K";
+    }
+
+    private static String showChar(Integer item, boolean html) {
+        return rtlProtect(UTF16.valueOf(item), html);
+    }
+    static UnicodeSet RTL = new UnicodeSet("[[:bc=R:][:bc=AL:][:bc=AN:]]").freeze();
+    static UnicodeSet CONTROLS = new UnicodeSet("[[:cc:][:Zl:][:Zp:]]").freeze();
+    static UnicodeSet INVISIBLES = new UnicodeSet("[:di:]").freeze();
+    static final char LRM = '\u200E';
+
+    private static String rtlProtect(String source, boolean html) {
+        if (CONTROLS.containsSome(source)) {
+            source = "";
+        } else if (INVISIBLES.containsSome(source)) {
+            source = "";
+        } else if (RTL.containsSome(source) || source.startsWith("\"")) {
+            source = LRM + source + LRM;
+        }
+        return html ? TransliteratorUtilities.toHTML.transform(source) : source;
+    }
+
+
+    private static Set<String> getLargestContained(Set<String> value, Collection<Set<String>> collection) {
+        Set<String> best = null;
+        for (Set<String> set : collection) {
+            if (best != null && best.size() > set.size()) {
+                continue;
+            }
+            if (value.containsAll(set)) {
+                best = set;
+            }
+        }
+        return best;
+    }
+
+    private static String getShortAge(int i) {
+        String age = UCharacter.getAge(i).toString();
+        return age.substring(0,age.indexOf('.',age.indexOf('.') + 1));
+    }
+
+    static SetMaker setMaker = new SetMaker() {
+        public Set make() {
+            return new TreeSet();
+        } 
+    };
+
+    static UnicodeMap<Set<String>> invisibles = new UnicodeMap();
+    static Map<R2<Integer,Integer>, Set<String>> equivalences = new TreeMap<R2<Integer,Integer>, Set<String>>(NFCLowerR2);
+//    static Set<String> SKIP_SHAPES = new HashSet<String>(Arrays.asList(
+//            "MT-Extra",
+//            "JCsmPC",
+//            "DFKaiShu-SB-Estd-BF",
+//            "LiGothicMed",
+//            "LiHeiPro",
+//            "LiSongPro",
+//            "LiSungLight",
+//            "PMingLiU",
+//            "SIL-Hei-Med-Jian",
+//            "SIL-Kai-Reg-Jian",
+//            "CharcoalCY",
+//            "GenevaCY",
+//            "HelveticaCYBoldOblique",
+//            "HelveticaCYOblique",
+//            "HelveticaCYPlain",
+//            "HoeflerText-Ornaments",
+//            "Apple-Chancery",
+//            "MSReferenceSpecialty",
+//            "Stencil",
+//            "Hooge0555",
+//            "Hooge0556",
+//            "Desdemona",
+//            "EccentricStd",
+//            "EngraversMT",
+//            "MesquiteStd",
+//            "RosewoodStd-Fill",
+//            "Stencil",
+//            "StencilStd",
+//            "Osaka",
+//            "Osaka-Mono",
+//            "Kroeger0455",
+//            "Kroeger0456",
+//            "Uni0563",
+//            "Uni0564",
+//            "Code2001",
+//            "AppleSymbols",
+//            "AppleGothic", 
+//            "AppleMyungjo",
+//            "JCkg",
+//            "MalithiWeb",
+//            "JCfg"
+//    ));
+
+    // bug on Mac: http://forums.sun.com/thread.jspa?threadID=5209611
+    private static UnicodeSet getCoverage(Font font) {
+        String name = font.getFontName();
+        boolean skipShapes = SKIP_SHAPES.contains(name);
+        UnicodeSet result = new UnicodeSet();
+        final FontRenderContext fontRenderContext = new FontRenderContext(null, false, false);
+        char[] array = new char[1];
+        char[] array2 = new char[2];
+        Map<Rectangle2D,Map<Shape,UnicodeSet>> boundsToData = new TreeMap<Rectangle2D,Map<Shape,UnicodeSet>>(ShapeComparator);
+        for (UnicodeSetIterator it = new UnicodeSetIterator(COVERAGE); it.next();) {
+            if (font.canDisplay(it.codepoint)) {
+                char[] temp;
+                if (it.codepoint <= 0xFFFF) {
+                    array[0] = (char) it.codepoint;
+                    temp = array;
+                } else {
+                    Character.toChars(it.codepoint, array2, 0);
+                    temp = array2;
+                }
+
+                GlyphVector glyphVector = font.createGlyphVector(fontRenderContext, temp);
+                int glyphCode = glyphVector.getGlyphCode(0);
+                boolean validchar = (glyphCode > 0);
+                if (!validchar) continue;
+
+                result.add(it.codepoint);
+
+                if (skipShapes) continue;
+                Shape shape = glyphVector.getOutline();
+                if (isInvisible(shape)) {
+                    Set<String> set = invisibles.get(it.codepoint);
+                    if (set == null) {
+                        invisibles.put(it.codepoint, set = new TreeSet<String>());
+                    }
+                    set.add(name);
+                } else {
+                    Rectangle2D bounds = glyphVector.getVisualBounds();
+                    Map<Shape, UnicodeSet> map = boundsToData.get(bounds);
+                    if (map == null) {
+                        boundsToData.put(bounds, map = new TreeMap<Shape,UnicodeSet>(ShapeComparator));
+                    }
+                    UnicodeSet set = map.get(shape);
+                    if (set == null) {
+                        map.put(shape, set = new UnicodeSet());
+                    }
+                    if (false && set.size() != 0) {
+                        System.out.println("Adding " + Utility.hex(it.codepoint) + "\t" + UTF16.valueOf(it.codepoint) +  "\tto " + set.toPattern(false));
+                    }
+                    set.add(it.codepoint);
+                }
+            }
+        }
+        //System.out.println(result.size() + "\t" + result);
+        for (Rectangle2D bounds : boundsToData.keySet()) {
+            Map<Shape, UnicodeSet> map = boundsToData.get(bounds);
+            for (Shape shape : map.keySet()) {
+                UnicodeSet set = map.get(shape);
+                set.removeAll(CONTROLS);
+                if (set.size() != 1) {
+                    //System.out.println(set.toPattern(false));
+                    for (UnicodeSetIterator it = new UnicodeSetIterator(set); it.next();) {
+                        for (UnicodeSetIterator it2 = new UnicodeSetIterator(set); it2.next();) {
+                            int cp = it.codepoint;
+                            int cp2 = it2.codepoint;
+                            if (cp >= cp2) continue;
+                            R2<Integer, Integer> r = Row.of(cp, cp2);
+                            Set<String> reasons = equivalences.get(r);
+                            if (reasons == null) {
+                                equivalences.put(r, reasons = new TreeSet());
+                            }
+                            reasons.add(name);
+                        }
+                    }
+                }
+            }
+        }
+        return result.freeze();
+    }
+
+    static Comparator<Rectangle2D> RectComparator = new Comparator<Rectangle2D>() {
+
+        public int compare(Rectangle2D r1, Rectangle2D r2) {
+            int diff;
+            if (0 != (diff = compareDiff(r1.getX(),r2.getX()))) return diff;
+            if (0 != (diff = compareDiff(r1.getY(),r2.getY()))) return diff;
+            if (0 != (diff = compareDiff(r1.getWidth(),r2.getWidth()))) return diff;
+            if (0 != (diff = compareDiff(r1.getHeight(),r2.getHeight()))) return diff;
+            return 0;
+        }
+
+    };
+
+    static final AffineTransform IDENTITY = new AffineTransform();
+
+    static boolean isInvisible(Shape shape) {
+        return shape.getPathIterator(IDENTITY).isDone();
+    }
+
+    static Comparator<Shape> ShapeComparator = new Comparator<Shape>() {
+        float[] coords1 = new float[6];
+        float[] coords2 = new float[6];
+
+        public int compare(Shape s1, Shape s2) {
+            int diff;
+            PathIterator p1 = s1.getPathIterator(IDENTITY);
+            PathIterator p2 = s2.getPathIterator(IDENTITY);
+            while (true) {
+                if (p1.isDone()) {
+                    return p2.isDone() ? 0 : -1;
+                } else if (p2.isDone()) {
+                    return 1;
+                }
+                int t1 = p1.currentSegment(coords1);
+                int t2 = p2.currentSegment(coords2);
+                diff = t1 - t2;
+                if (diff != 0) return diff;
+                /*
+                 * SEG_MOVETO and SEG_LINETO types returns one point,
+                 * SEG_QUADTO returns two points,
+                 * SEG_CUBICTO returns 3 points
+                 * and SEG_CLOSE does not return any points.
+                 */
+                switch (t1) {
+                case PathIterator.SEG_CUBICTO: 
+                    if (0 != (diff = compareDiff(coords1[5],coords2[5]))) return diff;
+                    if (0 != (diff = compareDiff(coords1[4],coords2[4]))) return diff;
+                case PathIterator.SEG_QUADTO: 
+                    if (0 != (diff = compareDiff(coords1[3],coords2[3]))) return diff;
+                    if (0 != (diff = compareDiff(coords1[2],coords2[2]))) return diff;
+                case PathIterator.SEG_MOVETO:
+                case PathIterator.SEG_LINETO: 
+                    if (0 != (diff = compareDiff(coords1[1],coords2[1]))) return diff;
+                    if (0 != (diff = compareDiff(coords1[0],coords2[0]))) return diff;
+                case PathIterator.SEG_CLOSE: break;
+                default: throw new IllegalArgumentException();
+                }
+                p1.next();
+                p2.next();
+            }
+        }
+    };
+
+    private static int compareDiff(float f, float g) {
+        return f < g ? -1 : f > g ? 1 : 0;
+    }
+    private static int compareDiff(double f, double g) {
+        return f < g ? -1 : f > g ? 1 : 0;
+    }
+}
diff --git a/tools/misc/src/com/ibm/icu/dev/tool/compression/CompressionTableGenerator.java b/tools/misc/src/com/ibm/icu/dev/tool/compression/CompressionTableGenerator.java
new file mode 100644
index 0000000..0f4fd7f
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/compression/package.html b/tools/misc/src/com/ibm/icu/dev/tool/compression/package.html
new file mode 100644
index 0000000..b4a3ec9
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/ime/IMETest.java b/tools/misc/src/com/ibm/icu/dev/tool/ime/IMETest.java
new file mode 100644
index 0000000..3612353
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/BengaliInputMethodDescriptor.java b/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/BengaliInputMethodDescriptor.java
new file mode 100644
index 0000000..9ebaa43
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/DevanagariInputMethodDescriptor.java b/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/DevanagariInputMethodDescriptor.java
new file mode 100644
index 0000000..8751e59
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/DisplayNames.properties b/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/DisplayNames.properties
new file mode 100644
index 0000000..40e5b1f
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/GujaratiInputMethodDescriptor.java b/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/GujaratiInputMethodDescriptor.java
new file mode 100644
index 0000000..b031e78
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/GurmukhiInputMethodDescriptor.java b/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/GurmukhiInputMethodDescriptor.java
new file mode 100644
index 0000000..910b3ba
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/IndicIMDescriptor.java b/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/IndicIMDescriptor.java
new file mode 100644
index 0000000..4c380b4
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethod.java b/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethod.java
new file mode 100644
index 0000000..333aa21
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethodImpl.java b/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/IndicInputMethodImpl.java
new file mode 100644
index 0000000..1ceb6d2
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/KannadaInputMethodDescriptor.java b/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/KannadaInputMethodDescriptor.java
new file mode 100644
index 0000000..8d81126
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/MalayalamInputMethodDescriptor.java b/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/MalayalamInputMethodDescriptor.java
new file mode 100644
index 0000000..9d9342f
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/OriyaInputMethodDescriptor.java b/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/OriyaInputMethodDescriptor.java
new file mode 100644
index 0000000..3fbaa1e
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/TamilInputMethodDescriptor.java b/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/TamilInputMethodDescriptor.java
new file mode 100644
index 0000000..11fa124
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/TeluguInputMethodDescriptor.java b/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/TeluguInputMethodDescriptor.java
new file mode 100644
index 0000000..e1f26be
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/manifest.stub b/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/manifest.stub
new file mode 100644
index 0000000..705ccf0
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/services/java.awt.im.spi.InputMethodDescriptor b/tools/misc/src/com/ibm/icu/dev/tool/ime/indic/services/java.awt.im.spi.InputMethodDescriptor
new file mode 100644
index 0000000..2ae5b1c
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/Transliterator.properties b/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/Transliterator.properties
new file mode 100644
index 0000000..d1fa411
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethod.java b/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethod.java
new file mode 100644
index 0000000..2261c22
--- /dev/null
+++ b/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethod.java
@@ -0,0 +1,721 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 2004-2009, 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;
+
+// remove dependency on ICU collator, restore if we actually need it
+// import com.ibm.icu.text.Collator;
+import java.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/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethodDescriptor.java b/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/TransliteratorInputMethodDescriptor.java
new file mode 100644
index 0000000..d2575ea
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/manifest.stub b/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/manifest.stub
new file mode 100644
index 0000000..47e3197
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/services/java.awt.im.spi.InputMethodDescriptor b/tools/misc/src/com/ibm/icu/dev/tool/ime/translit/services/java.awt.im.spi.InputMethodDescriptor
new file mode 100644
index 0000000..1035973
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/ArabicCharacterData.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/ArabicCharacterData.java
new file mode 100644
index 0000000..35dbc3f
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/ArabicShaping.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/ArabicShaping.java
new file mode 100644
index 0000000..34d65e2
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/BuildMirroringTables.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/BuildMirroringTables.java
new file mode 100644
index 0000000..665c188
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/CanonGSUBBuilder.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/CanonGSUBBuilder.java
new file mode 100644
index 0000000..cef1b69
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/CanonicalCharacterData.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/CanonicalCharacterData.java
new file mode 100644
index 0000000..3cd87f3
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/ClassTable.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/ClassTable.java
new file mode 100644
index 0000000..68bae04
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/DecompTable.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/DecompTable.java
new file mode 100644
index 0000000..4ef51db
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/Feature.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/Feature.java
new file mode 100644
index 0000000..7acf87d
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/FeatureList.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/FeatureList.java
new file mode 100644
index 0000000..e7e61d5
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/GDEFWriter.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/GDEFWriter.java
new file mode 100644
index 0000000..e9c13f9
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/GSUBWriter.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/GSUBWriter.java
new file mode 100644
index 0000000..c6fcf37
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/LanguageData.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/LanguageData.java
new file mode 100644
index 0000000..7895a31
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureEntry.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureEntry.java
new file mode 100644
index 0000000..ce06a34
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureModuleWriter.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureModuleWriter.java
new file mode 100644
index 0000000..c15209f
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureTree.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureTree.java
new file mode 100644
index 0000000..f6f2604
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureTreeWalker.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/LigatureTreeWalker.java
new file mode 100644
index 0000000..f687e4f
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/Lookup.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/Lookup.java
new file mode 100644
index 0000000..cfca302
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/LookupList.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/LookupList.java
new file mode 100644
index 0000000..7de5711
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/LookupSubtable.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/LookupSubtable.java
new file mode 100644
index 0000000..1ab0143
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/ModuleWriter.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/ModuleWriter.java
new file mode 100644
index 0000000..476e076
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/OpenTypeTableWriter.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/OpenTypeTableWriter.java
new file mode 100644
index 0000000..a16d831
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/OpenTypeTagBuilder.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/OpenTypeTagBuilder.java
new file mode 100644
index 0000000..93e111a
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptAndLanguages b/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptAndLanguages
new file mode 100644
index 0000000..d246813
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptData.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptData.java
new file mode 100644
index 0000000..d86aad5
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptIDModuleWriter.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptIDModuleWriter.java
new file mode 100644
index 0000000..72d2f5a
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptList.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptList.java
new file mode 100644
index 0000000..6a626e5
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptModuleWriter.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptModuleWriter.java
new file mode 100644
index 0000000..b1cad78
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptNameBuilder.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptNameBuilder.java
new file mode 100644
index 0000000..991153b
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptRunModuleWriter.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptRunModuleWriter.java
new file mode 100644
index 0000000..5aa96e5
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptTagModuleWriter.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptTagModuleWriter.java
new file mode 100644
index 0000000..6d77f70
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/ShapingTypeBuilder.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/ShapingTypeBuilder.java
new file mode 100644
index 0000000..b6d427a
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/TagUtilities.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/TagUtilities.java
new file mode 100644
index 0000000..2841668
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/TagValueData.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/TagValueData.java
new file mode 100644
index 0000000..04175cb
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/TaggedRecord.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/TaggedRecord.java
new file mode 100644
index 0000000..b18c07f
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiCharacterClasses.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiCharacterClasses.java
new file mode 100644
index 0000000..949937b
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTable.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTable.java
new file mode 100644
index 0000000..935f1c8
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTableBuilder.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTableBuilder.java
new file mode 100644
index 0000000..88d04e1
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTableModuleWriter.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTableModuleWriter.java
new file mode 100644
index 0000000..3ff9a0b
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTransition.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/ThaiStateTransition.java
new file mode 100644
index 0000000..2d05eb1
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/layout/TreeWalker.java b/tools/misc/src/com/ibm/icu/dev/tool/layout/TreeWalker.java
new file mode 100644
index 0000000..9ec4471
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java b/tools/misc/src/com/ibm/icu/dev/tool/localeconverter/CalculateCRC32.java
new file mode 100644
index 0000000..59b46b3
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java b/tools/misc/src/com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java
new file mode 100644
index 0000000..a830ddb
--- /dev/null
+++ b/tools/misc/src/com/ibm/icu/dev/tool/localeconverter/XLIFF2ICUConverter.java
@@ -0,0 +1,1255 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 2003-2009, 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);
+            } catch (UnsupportedOperationException e) {
+                System.err.println("ERROR:\tOne of the schema operations is not supported with this JVM.");
+                System.err.println("\tIf you are using GNU Java, you should try using the latest Sun JVM.");
+                System.err.println("\n*Here is the stack trace:");
+                e.printStackTrace();
+                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/tools/misc/src/com/ibm/icu/dev/tool/localeconverter/manifest.stub b/tools/misc/src/com/ibm/icu/dev/tool/localeconverter/manifest.stub
new file mode 100644
index 0000000..7c1bdf7
--- /dev/null
+++ b/tools/misc/src/com/ibm/icu/dev/tool/localeconverter/manifest.stub
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Main-Class: com.ibm.icu.dev.tool.localeconverter.XLIFF2ICUConverter
+
+Name: com/ibm/icu/dev/tool/localeconverter
+Specification-Title: XLIFF to ICU conversion tool
+Specification-Version: 1.1
+Specification-Vendor: ICU
+Implementation-Title: XLIFF to ICU Converter
+Implementation-Version: 1.1.0
+Implementation-Vendor: IBM Corporation
+Implementation-Vendor-Id: com.ibm
+Copyright-Info: Copyright (c) 2005-2009, International Business Machines Corporation and others.  All Rights Reserved.
+Sealed: false
diff --git a/tools/misc/src/com/ibm/icu/dev/tool/rbbi/BuildDictionaryFile.java b/tools/misc/src/com/ibm/icu/dev/tool/rbbi/BuildDictionaryFile.java
new file mode 100644
index 0000000..8c722a7
--- /dev/null
+++ b/tools/misc/src/com/ibm/icu/dev/tool/rbbi/BuildDictionaryFile.java
@@ -0,0 +1,880 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ */
+package com.ibm.icu.dev.tool.rbbi;
+
+import java.io.DataOutputStream;
+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.io.PrintWriter;
+import java.io.UnsupportedEncodingException;
+import java.util.Vector;
+
+import com.ibm.icu.text.UnicodeSet;
+import com.ibm.icu.util.CompactByteArray;
+
+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];
+        if (0 != p) {
+            tempReverseMap.getChars(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/tools/misc/src/com/ibm/icu/dev/tool/rbbi/readme.html b/tools/misc/src/com/ibm/icu/dev/tool/rbbi/readme.html
new file mode 100644
index 0000000..5f62a98
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/serializable/SerializableChecker.java b/tools/misc/src/com/ibm/icu/dev/tool/serializable/SerializableChecker.java
new file mode 100644
index 0000000..755fa83
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/timescale/CalculateLimits.java b/tools/misc/src/com/ibm/icu/dev/tool/timescale/CalculateLimits.java
new file mode 100644
index 0000000..16ce321
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/timescale/EpochOffsets.java b/tools/misc/src/com/ibm/icu/dev/tool/timescale/EpochOffsets.java
new file mode 100644
index 0000000..952fee6
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/timescale/GenerateCTimeScaleData.java b/tools/misc/src/com/ibm/icu/dev/tool/timescale/GenerateCTimeScaleData.java
new file mode 100644
index 0000000..7c7cec8
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/timezone/ICUZDump.java b/tools/misc/src/com/ibm/icu/dev/tool/timezone/ICUZDump.java
new file mode 100644
index 0000000..a011aa9
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/translit/SourceSet.java b/tools/misc/src/com/ibm/icu/dev/tool/translit/SourceSet.java
new file mode 100644
index 0000000..cef0a6b
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/translit/Trans.java b/tools/misc/src/com/ibm/icu/dev/tool/translit/Trans.java
new file mode 100644
index 0000000..04d43d2
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/translit/UnicodeSetCloseOver.java b/tools/misc/src/com/ibm/icu/dev/tool/translit/UnicodeSetCloseOver.java
new file mode 100644
index 0000000..489b4a6
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/translit/UnicodeSetClosure.java b/tools/misc/src/com/ibm/icu/dev/tool/translit/UnicodeSetClosure.java
new file mode 100644
index 0000000..5e19200
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/translit/WriteIndicCharts.java b/tools/misc/src/com/ibm/icu/dev/tool/translit/WriteIndicCharts.java
new file mode 100644
index 0000000..d87fd4e
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/translit/dumpICUrules.bat b/tools/misc/src/com/ibm/icu/dev/tool/translit/dumpICUrules.bat
new file mode 100755
index 0000000..4bfd5eb
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/translit/genIndexFilters.bat b/tools/misc/src/com/ibm/icu/dev/tool/translit/genIndexFilters.bat
new file mode 100755
index 0000000..6811313
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/translit/genIndexFilters.java b/tools/misc/src/com/ibm/icu/dev/tool/translit/genIndexFilters.java
new file mode 100644
index 0000000..de7e397
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/translit/indic.bat b/tools/misc/src/com/ibm/icu/dev/tool/translit/indic.bat
new file mode 100755
index 0000000..57293b1
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/translit/indic.pl b/tools/misc/src/com/ibm/icu/dev/tool/translit/indic.pl
new file mode 100755
index 0000000..4d614ba
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/translit/indicExceptions.txt b/tools/misc/src/com/ibm/icu/dev/tool/translit/indicExceptions.txt
new file mode 100644
index 0000000..fd26dd2
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/translit/rbtTemplate.txt b/tools/misc/src/com/ibm/icu/dev/tool/translit/rbtTemplate.txt
new file mode 100644
index 0000000..0549bbd
--- /dev/null
+++ b/tools/misc/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/tools/misc/src/com/ibm/icu/dev/tool/translit/varsub.bat b/tools/misc/src/com/ibm/icu/dev/tool/translit/varsub.bat
new file mode 100755
index 0000000..cd342c9
--- /dev/null
+++ b/tools/misc/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/tools/misc/tools-build.launch b/tools/misc/tools-build.launch
new file mode 100644
index 0000000..81fe59d
--- /dev/null
+++ b/tools/misc/tools-build.launch
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/icu4j-tools/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="icu4j-tools"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<mapAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTIES">
+<mapEntry key="eclipse.running" value="true"/>
+<mapEntry key="eclipse.pdebuild.templates" value="/D:/eclipse-SDK-3.4.2-win32/eclipse/plugins/org.eclipse.pde.build_3.4.1.R34x_v20081217/templates/"/>
+<mapEntry key="eclipse.home" value="D:\eclipse-SDK-3.4.2-win32\eclipse"/>
+<mapEntry key="eclipse.pdebuild.scripts" value="/D:/eclipse-SDK-3.4.2-win32/eclipse/plugins/org.eclipse.pde.build_3.4.1.R34x_v20081217/scripts/"/>
+<mapEntry key="eclipse.pdebuild.home" value="/D:/eclipse-SDK-3.4.2-win32/eclipse/plugins/org.eclipse.pde.build_3.4.1.R34x_v20081217/./"/>
+</mapAttribute>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_ANT_PROPERTY_FILES" value="${workspace_loc:/icu4j-shared/build/locations-eclipse.properties},"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/icu4j-tools/build.xml}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
